Flutter项目升级空安全后遗留两处代码报错无法解决求助
Flutter空安全适配报错解决方案
第一处报错修复方案
该报错通常为可空类型返回值赋值给非空变量导致,可根据业务场景二选一处理:
- 若确认返回值一定不为空,在调用表达式末尾添加
!强制声明非空,示例:// 原代码 String result = await rootBundle.loadString("assets/config.json"); // 修复后 String result = await rootBundle.loadString("assets/config.json")!; - 若无法保证返回值非空,将接收变量声明为可空类型,后续使用前做非空判断,示例:
// 原代码 String result = await rootBundle.loadString("assets/config.json"); // 修复后 String? result = await rootBundle.loadString("assets/config.json"); if (result != null) { // 后续业务逻辑 }
第二处报错修复方案
该报错通常为dynamic类型集合无法直接赋值给指定类型集合导致,推荐两种修复方式:
- 使用
cast()方法快速做类型转换,示例:// 原代码 List<String> tagList = json["tags"]; // 修复后 List<String> tagList = (json["tags"] as List).cast<String>(); - 遍历集合逐个转换类型,兼容性更强,示例:
List<String> tagList = (json["tags"] as List).map((item) => item.toString()).toList();
内容的提问来源于stack exchange,提问作者slackgate
相关产品推荐
相关产品推荐

