【发布时间】:2020-07-16 07:52:06
【问题描述】:
我知道这个问题被问了很多,我花了很多时间阅读并尝试实施答案。因此,我试图从 Firebase Auth 获取来自 isEmailVerified 的响应,它确实有效,但现在它总是返回 false,除非我刷新应用程序或关闭它并重新打开它。这显然是一种糟糕的用户体验。如何在不关闭应用的情况下获得更新响应。
这里是相关的代码。
Future<bool> isEmailVerified() async {
FirebaseUser user = await _auth.currentUser();
if (user == null) {
return false;
} else {
await user.reload();
user = await _auth.currentUser();
return user.isEmailVerified;
}
}
main.dart
child: Consumer<Auth>(
builder: (_, auth, __) => MaterialApp(
theme: Provider.of<ThemeNotifier>(context).getTheme(),
home: FutureBuilder(
future: Future.wait([auth.isEmailVerified(), auth.tryAutoLogin()]),
builder: (BuildContext ctx, AsyncSnapshot authResultSnapshot) =>
authResultSnapshot.connectionState == ConnectionState.done
? authResultSnapshot.data[1]
? authResultSnapshot.data[0]
? HearingsScreen()
: SplashScreen(
emailVerified: true,
)
: LoginScreen()
: SplashScreen(),
),
在我重新启动应用程序之前它不会返回 true
除此之外我尝试过的事情:
1) await user.getIdToken(refresh: true);
2) 注销用户然后重新登录
3) firebase_user_stream 包
感谢任何帮助。
【问题讨论】:
-
尝试在
isEmailVerified()中添加notifylistener()这是我的猜测 -
notifyListener()在我的ConnectionState.waiting中卡住FutureBuilder -
你一般不能使用未来的建设者和提供者
-
我显然不知道我会检查出来thx
标签: firebase flutter firebase-authentication