升级Flutter 3.16后无法构建Android/iOS包,遇空安全类型错误
Flutter 3.16构建报错:可空布尔类型无法赋值给非可空布尔类型
问题现象
升级Flutter 3.16后执行assembleDebug任务时失败,核心错误为第三方库中bool?类型无法赋值给bool类型,具体错误日志:
Running Gradle task 'assembleDebug'... ../../.pub-cache/hosted/pub.dev/enough_platform_widgets-0.7.4/lib/src/platform/decorated_platform_textfield.dart:536:20: Error: The argument type 'bool?' can't be assigned to the parameter type 'bool' because 'bool?' is nullable and 'bool' isn't. enabled: enabled, ^ ../../.pub-cache/hosted/pub.dev/flutter_platform_widgets-3.3.5/lib/src/platform_text_field.dart:578:30: Error: The argument type 'bool?' can't be assigned to the parameter type 'bool' because 'bool?' is nullable and 'bool' isn't. enabled: data?.enabled ?? enabled, ^ Target kernel_snapshot failed: Exception FAILURE: Build failed with an exception. * Where: Script '/flutter/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy' line: 1350 * What went wrong: Execution failed for task ':app:compileFlutterBuildDebug'. > Process 'command '/flutter/bin/flutter'' finished with non-zero exit value 1
解决方案
1. 升级涉事第三方库
报错的enough_platform_widgets(0.7.4)和flutter_platform_widgets(3.3.5)版本未适配Flutter 3.16的空安全检查:
- 打开项目根目录的
pubspec.yaml文件,找到这两个依赖项,将版本号更新为最新稳定版 - 执行命令更新依赖:
flutter pub upgrade
2. 临时本地修复(若库未更新兼容版本)
如果第三方库尚未发布适配版本,可临时修改缓存中的源码:
- 定位到报错文件:
enough_platform_widgets:修改第536行的enabled: enabled,为enabled: enabled ?? true,(根据业务逻辑设置默认值,true或false均可)flutter_platform_widgets:修改第578行的enabled: data?.enabled ?? enabled,为enabled: data?.enabled ?? enabled ?? true,,确保最终传入非空布尔值
3. 清理缓存重新构建
执行以下命令清理缓存并重新构建项目:
flutter clean flutter pub get flutter run
内容的提问来源于stack exchange,提问作者user4950345
相关产品推荐
相关产品推荐

