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

Flutter Web使用shared_preference 2.0.6调用getString出现空值报错

问题诱发原因
  • 空安全类型匹配错误:shared_preferences 2.0.6为适配Flutter空安全的版本,getString(key)方法在对应key未存储过值时会返回null。你直接将null赋值给非空类型String loginedInUser,运行时会直接抛出空值异常,代码执行中断,因此第二条日志无法触发,异常向上传递后会在FutureBuilder中抛出对应报错。
  • 实例为null的调用异常:如果Web端的shared_preferences平台实现未正确注册,会导致SharedPreferences.getInstance()返回null,调用prefs.getString时就会触发报错信息中的Receiver: null类异常。
解决方案
  • 适配空返回值:修改代码处理可能的null返回,两种可选写法:
// 写法1:使用可空类型接收,后续做空判断
String? loginedInUser = prefs.getString("user");
print("logged in user: ${loginedInUser ?? "无登录用户"}");

// 写法2:设置默认值确保返回非空
String loginedInUser = prefs.getString("user") ?? "";
print("logged in user: $loginedInUser");
  • 修复Web端实现注册异常:如果是Web端运行出现问题,依次执行flutter clean、flutter pub get重新拉取依赖,确保shared_preferences_web平台实现被正常引入。
  • 版本适配:如果你的项目未开启空安全,需要将shared_preferences降级到2.0.0以下的非空安全适配版本,避免版本不兼容引发的空异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:36:03