【发布时间】:2020-12-19 11:34:04
【问题描述】:
我知道存在这样的问题,但其中充满了过时和不正确的答案。新的FlutterFire 文档使用 Streams 来获取用户的状态,我很难尝试执行这样一个微不足道的任务,因为我对 Flutter 和 Dart 缺乏经验。这是过时问题的答案和参考。
- 回答:https://stackoverflow.com/a/50714618/14080391
- 参考:https://firebase.flutter.dev/docs/auth/usage#authentication-state
我期待 StreamBuilder 的答案,这里是我写到现在的代码:
@override
Widget build(BuildContext context) {
return StreamBuilder(
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
if(snapshot.hasData) {
print("data exists");
return snapshot.data ? First() : SignIn();
}
else {
return SignIn();
}
},
future: isUserLoggedIn(),
);
}
Stream<bool> isUserLoggedIn() {
FirebaseAuth.instance
.authStateChanges()
.listen((User user) {
if (user == null) {
print('User is currently signed out!');
// return false; ???
} else {
print('User is signed in!');
// return true; ???
}
});
}
编辑:
Firebase 身份验证使您能够通过 >Stream 实时订阅此状态。一旦被调用,该流将提供用户当前身份验证状态的即时事件,然后在身份验证状态发生变化时提供后续事件。
【问题讨论】:
-
StreamBuilder不接受future属性,它需要stream属性。
标签: firebase flutter dart firebase-authentication stream