Flutter调用reload方法报错,Firebase Auth用户刷新问题
解决Flutter Firebase Auth空安全错误
错误根源
两个错误均由Dart空安全机制触发:
AuthService.firebase().currentUser可能返回null,直接调用reload()会触发空安全校验错误- 误将
currentUser属性当作方法调用(Firebase Auth中currentUser是只读属性,无需加括号)
修正后的代码
onPressed: () async { final authService = AuthService.firebase(); var user = authService.currentUser; // 先确认用户存在,再执行刷新操作 if (user != null) { await user.reload(); // 重新获取用户信息(注意currentUser是属性,去掉括号) user = authService.currentUser; } if (user?.isEmailVerified ?? false) { Navigator.of(context).pushNamedAndRemoveUntil( passwordsRoute, (route) => false, ); } else { Navigator.of(context).pushNamedAndRemoveUntil( verifyEmailRoute, (route) => false, ); } },
关键修改说明
- 增加空检查:通过
if (user != null)确保调用reload()时用户实例非空,规避空指针风险 - 修正属性调用:将
currentUser()改为currentUser,匹配Firebase Auth的API规范 - 可选简化:若该页面仅对已登录用户开放(可确定
user非空),可直接用非空断言简化代码:await user!.reload();
内容的提问来源于stack exchange,提问作者Ruben
相关产品推荐
相关产品推荐

