我正在尝试使用 FirebaseAuth.instance.currentUser 确定用户是否已登录 (Flutter Firebase),然后返回 LoginScreen 或 Dashboard,但出现错误。我尝试根据 FirebaseFlutter 的说明编写代码,但这些代码似乎已被弃用...
Widget build(BuildContext context) {
return FutureBuilder<User>(
future: FirebaseAuth.instance.currentUser,
builder: (BuildContext context, AsyncSnapshot<User> snapshot) {
if (snapshot.hasData) {
User user = snapshot.data;
/// is because there is user already logged
return Dashboard();
}
/// other way there is no user logged.
return LoginScreen();
});
}
我在第 3 行遇到错误 future: ...
代表 The argument type 'User' can't be assigned to the parameter type 'Future<User>'
.请任何人向我解释我应该怎么做,以及我做错了什么?
我试图在函数 ()=>
中传递它但它仍然不起作用......
当前使用 firebase_auth:0.20 和 firebase_core 0.7
最佳答案
这是因为 FirebaseAuth.instance.currentUser
返回 User
和 FutureBuilder
期待 future
,要解决这个问题你有两个选择:
- 使用此语法:
future: Future.value(FirebaseAuth.instance.currentUser),
,这会将User
转换为 ```Future - 检查
FirebaseAuth.instance.currentUser
是否为null
并返回方便的小部件。
关于firebase - 无法将“用户”分配给 FutureBuilder 中的参数类型 'Future<User>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66164073/