Flutter复制List的hostId值到空列表时报_TypeError错误如何解决
错误原因
你声明的pcBusy是List类型,但for循环中直接用赋值运算符=将int类型的hostId赋值给了pcBusy变量,直接修改了变量的类型,触发类型不匹配报错。
修复方案
将循环内的赋值逻辑改为调用列表的add()方法,把每个hostId插入到列表末尾即可,修正后的代码如下:
List pcBusy = []; void fetchDataStandart() async { final urlAuth = Uri.parse('http://185.XX.XXX.XXX/api/usersessions/activeinfo'); final response = await http .get(urlAuth, headers: <String, String>{'authorization': basicAuth}); if (response.statusCode == 200) { List listPc = List.from(json.decode(response.body)['result']); for (int i = 0; i < listPc.length; i++) { pcBusy.add(listPc[i]['hostId']); } print(pcBusy); } else { throw Exception('Ошибка получения данных'); } }
可选优化写法
你也可以直接用map方法完成转换,省去手写for循环的步骤:
// 替换原有for循环即可 pcBusy = listPc.map((item) => item['hostId']).toList();
内容的提问来源于stack exchange,提问作者Чак Джонс
相关产品推荐
相关产品推荐

