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

Flutter中get_storage无法持久化主题状态,重启应用后数据丢失求助

问题原因及解决方法

核心问题是你没有正确初始化GetStorage,而是在main函数里调用了Prefs.init(),这导致GetStorage无法完成持久化存储的初始化,重启后自然读不到之前保存的变量。

具体修改步骤

  1. 修改main函数,替换Prefs.init()为GetStorage的异步初始化:
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化GetStorage,这一步是必须的
  await GetStorage.init();
  runApp(QRCodeScannerApp());
}
  1. 可选优化:你在initState里的box.writeIfNull('isDark', false)可以保留,但其实在第一次启动时,changeTheme里的writeIfNull也会处理默认值,不过留着也没问题。

为什么这样改?

GetStorage需要通过await GetStorage.init()完成底层存储的初始化操作,否则所有的读写操作都无法真正持久化到设备存储中,重启应用后自然读取不到之前保存的isDark值,只能得到null。

内容的提问来源于stack exchange,提问作者Samier Uddin Ahammad Shovo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:19:59