Flutter shared_preferences ^2.0.6 初始化空值检查运算符错误如何解决
报错根因
该报错是因为在 Flutter 框架的 WidgetsBinding 完成初始化之前,就调用了依赖原生平台通道的 SharedPreferences.getInstance() 方法,导致方法通道的 binaryMessenger 为空,触发空安全的空校验崩溃。
解决步骤
- 第一步:修改main.dart代码,在执行所有异步初始化逻辑之前,先调用
WidgetsFlutterBinding.ensureInitialized()完成 Flutter 引擎绑定初始化,修改后的代码如下:
Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Global.init(); runApp(MyApp()); }
- 第二步:清理项目缓存重新构建
执行以下命令清理缓存:
flutter clean flutter pub get cd ios rm -rf Podfile.lock Pods pod install
完成后卸载设备上已安装的旧版应用,重新运行项目即可。
- 可选方案:如果上述操作后问题仍存在,可升级
shared_preferences插件到更高稳定版本,2.0.6属于较老版本,后续版本修复了多场景下的初始化兼容问题,可将pubspec.yaml中的依赖版本改为:
shared_preferences: ^2.2.2
重新执行flutter pub get后再运行项目。
- 混合开发场景排查:如果项目接入了FlutterBoost、FlutterFragment之类的混合开发框架,需要确保调用
SharedPreferences.getInstance()时,Flutter 容器已经完成初始化,不要在原生侧未加载 Flutter 页面的阶段提前触发Dart侧的 SharedPreferences 初始化逻辑。
内容的提问来源于stack exchange,提问作者yorkYu
相关产品推荐
相关产品推荐

