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

未登录状态下,该Flutter异步方法会返回True还是False?

方法返回值分析

当用户尚未登录且未存储isLoggedIn记录时,这段代码不会返回布尔值,而是直接抛出类型转换异常(CastError)。

原因说明:

  • SharedPreferences.getBool('isLoggedIn')在找不到对应键的记录时会返回null
  • 代码里用as bool强制把null转为非可空的bool类型,Dart不允许这种操作,因此会触发异常

修正方案:

如果要正确处理未登录场景,可以通过空值合并运算符设置默认值,避免异常:

Future<bool> userIsLoggedIn() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  // 当获取的值为null时,默认返回false
  bool _isLoggedIn = prefs.getBool('isLoggedIn') ?? false;
  return _isLoggedIn;
}

内容的提问来源于stack exchange,提问作者Cliff Odebala Clarke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 00:42:00