You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 16:54:03