Flutter 2.5.x使用flutter_secure_storage 5.0.2读取数据空指针如何解决?
问题修复方案
问题根因
该空指针报错是flutter_secure_storage 5.0.2版本在Android平台的已知缺陷:插件未完成SharedPreferences实例初始化时,提前调用读/写方法就会触发该异常。
修复步骤
方案1:Android端配置调整+调用逻辑优化(适配当前版本无需换包)
- 修改Android清单配置
打开android/app/src/main/AndroidManifest.xml,在application节点新增2个属性,关闭系统自动备份规则避免旧存储数据冲突:
<application android:allowBackup="false" android:fullBackupContent="false" <!-- 其余原有配置保持不变 --> >
- 读写操作增加异常捕获
修改封装的SecureStorageUtil.getString方法,捕获初始化未完成的异常,兼容异常场景返回默认值:
static FlutterSecureStorage _preferences = FlutterSecureStorage(); static Future<String?> getString (String key, {String? defValue}) async { try { final result = await _preferences.read(key: key); return result ?? defValue; } on PlatformException catch (_) { // 插件未初始化完成时直接返回默认值 return defValue; } }
- 调整调用时机:不要在Flutter引擎初始化完成前调用flutter_secure_storage的读写方法,尽量保证在
runApp()执行完成后再触发相关读写逻辑。
方案2:版本适配修复
如果方案1无效,可直接升级flutter_secure_storage到5.1.0及以上版本,该版本官方已经修复了Android端SharedPreferences空指针的问题,执行命令:
flutter pub upgrade flutter_secure_storage
如果受环境限制不能升级,也可以降级到4.2.1稳定版本,该版本无上述初始化缺陷。
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

