【发布时间】:2020-08-30 02:54:56
【问题描述】:
我有一些关于在 Flutter 应用程序 (iOS) 上使用 Firebase 身份验证(电子邮件和密码)时说出用户的问题。我搜索了很多,但我无法理解我的问题的最后一点。
所以在我的应用程序中,我有多个屏幕,我使用 Navigator.pushNamed(...) 进行路由。 用户能够导航到他应该能够注销的设置屏幕。
class _OptionScreenState extends State<OptionScreen> {
FirebaseAuth _auth = FirebaseAuth.instance;
_signOut() async {
try {
await _auth.signOut();
} catch (e) {
print(e.toString());
}
}
@override
Widget build(BuildContext context) {
(...some more code here....)
ListTile(
title: Text(
'Logout',
style: TextStyle(fontSize: 25.0),
),
onTap: () async {
await _signOut();
Navigator.pushReplacementNamed(context, 'welcome_screen');
},
Welcome_Screen 是用户可以在其中选择登录或唱歌的起始屏幕。
被推送到欢迎屏幕后,我收到以下错误:
接收者:空 尝试调用:uid 颤振:NoSuchMethodError:在 null 上调用了 getter 'uid'。
所以我的问题是:
- 我在任何需要的地方创建身份验证实例。我需要一个全局实例还是必须唱出我创建的每个实例?我感觉其他“屏幕”仍然处于活动状态,并且在登录后他们错过了一个活动用户(我希望这是可以理解的) 如果为真:我可以关闭这些屏幕吗?以便用户在注销后使用“新鲜”应用程序开始?
- 有解决办法吗(哈哈)
- 我应该使用 Provider 来共享一个 _auth 实例吗?
【问题讨论】:
标签: flutter firebase-authentication