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

Flutter中SharedPreferences无法正常保存数据该如何解决?

问题原因

  • 异步读取存储值后未触发UI更新:你在getStringValuesSF方法中拿到存储的字符串后直接赋值给text变量,没有调用setState通知Flutter刷新UI,所以重新打开应用后界面不会显示之前保存的数据。
  • 未处理空值场景:SharedPreferences.getString在对应key从未存储过值时会返回null,直接赋值给非空String类型的text会触发类型异常。

修复代码

只需修改getStringValuesSF方法即可,调整后逻辑如下:

//method to get the string
getStringValuesSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  //Return String,空值默认返回空字符串
  String? stringValue = prefs.getString('stringValue');
  // 调用setState触发UI刷新
  setState(() {
    text = stringValue ?? "";
  });
}

如果需要保证存储操作的可靠性,也可以给prefs.setString加上await修饰:

onPressed: () async {
  setState(() {
    text = _controller.text;
  });
  SharedPreferences prefs = await SharedPreferences.getInstance();
  // 加await确认存储完成
  await prefs.setString('stringValue', text);
},

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 00:24:02