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

调用SharedPreferences.getInstance()抛出_CastError空值检查运算符错误

问题原因

你遇到的_CastError (Null check operator used on a null value)报错出现在SharedPreferences初始化流程中,核心原因有两个:

  1. 在main函数中执行异步初始化操作前,未提前初始化Flutter引擎绑定,导致平台通道调用时底层返回空值
  2. 当前使用的shared_preferences_platform_interface 2.0.0版本存在已知的空安全兼容bug

解决方案

1. 增加Flutter引擎绑定初始化

修改main.dart的main方法,在所有异步操作前先调用WidgetsFlutterBinding.ensureInitialized(),修改后代码如下:

Future<void> main() async {
  // 必须放在所有异步操作前,确保Flutter平台通道完全初始化
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化应用配置
  await AppSettings.initialize();
  runApp(App());
}

该方法会提前完成Flutter与原生层交互的通道初始化,避免后续依赖原生能力的操作(比如SharedPreferences读写)出现空值异常。

2. 升级shared_preferences依赖版本

你当前使用的shared_preferences底层平台接口版本存在已知bug,建议升级到最新稳定版:
打开项目pubspec.yaml文件,修改依赖配置:

dependencies:
  flutter:
    sdk: flutter
  # 替换为2.2.2及以上的最新稳定版即可
  shared_preferences: ^2.2.2

修改后执行flutter pub get拉取最新版本依赖。

3. 缓存清理(可选)

如果修改后仍然报错,可按以下步骤清理后重新编译:

  • 执行flutter clean清理项目编译缓存
  • 执行flutter pub get重新拉取依赖
  • 卸载设备上已安装的旧版应用,重新运行项目即可

内容的提问来源于stack exchange,提问作者Anshul Srivastava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:18:02