未登录状态下,该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
相关产品推荐
相关产品推荐

