Flutter运行时Debug控制台无预期输出且报Chrome偏好保存错误
问题根因
- 循环逻辑错误:代码中for循环的判断条件写反,初始值
i=0时i>100的判断结果永远为假,循环体一次都不会执行,自然不会打印接口返回的内容。你单独写的print("hi")不在循环逻辑内,所以可以正常输出。 - 浏览器进程残留报错:你使用Edge作为调试设备,上次调试结束后相关进程没有被完全杀死,残留进程占用了Flutter生成的临时缓存文件,触发errno=32的文件占用错误,部分场景下会打断正常代码执行流程。
- 类型声明不规范:
fetchAlbum方法没有指定返回值泛型,解码后的数据为隐式dynamic类型,若接口返回结构不符合预期也可能触发运行时异常终止后续逻辑。
解决步骤
- 修正for循环条件,将
i>100改为i<100,同时可以先打印接口返回数据的长度,确认接口请求正常:
import 'package:http/http.dart' as http; import 'dart:convert'; void main()async { var data =await fatchalbum(); // 先确认接口返回数据是否正常 print("接口返回数据长度:${data.length}"); // 修正循环条件 for(int i =0; i<100;i++){ print(data[i]["userId"]); print(data[i]["id"]); print(data[i]["title"]); } } Future<List<dynamic>> fatchalbum()async{ final url ="https://jsonplaceholder.typicode.com/albums"; final res = await http.get(Uri.parse(url)); if(res.statusCode==200){ var obj = json.decode(res.body); return obj; }else{ throw Exception("error"); } }
- 遇到文件占用报错时,打开任务管理器结束所有残留的Edge/Chrome调试进程,也可以直接删除
C:\Users\dell\AppData\Local\Temp目录下所有flutter_tools开头的临时文件夹,再重新启动调试即可。
内容的提问来源于stack exchange,提问作者Amal yosri
相关产品推荐
相关产品推荐

