Flutter报错:参数类型'Null'无法分配给参数类型'String'问题求解
报错原因
该报错是Dart空安全校验触发的,你调用close(context, null)时,close方法的第二个参数被定义为非可空String类型,不允许传入null值。
解决方案
根据你的业务场景选择任意一种即可:
- 方案一:传空字符串替代null
无需修改方法定义,直接将调用代码修改为:
后续业务逻辑中把空字符串和null做等价处理即可。@override Widget? buildLeading(BuildContext context) { return IconButton( icon: AnimatedIcon( icon: AnimatedIcons.menu_arrow, progress: transitionAnimation, ), onPressed: () { close(context, ""); }, ); } - 方案二:修改close方法的参数定义为可空类型
如果业务确实需要传null,把close方法的第二个参数类型改为String?:// 原方法定义示例 // void close(BuildContext context, String result) // 修改后 void close(BuildContext context, String? result) { // 原有逻辑中使用result前需要先做非空判断,避免空安全异常 } - 方案三:如果不需要返回结果
可以调整close方法的定义,去掉第二个参数,调用时直接传close(context)即可。
内容的提问来源于stack exchange,提问作者Riddhipratim Adhikari
相关产品推荐
相关产品推荐

