flutter 用户类不能为 null

问题描述 投票:0回答:1

我正在制作flutter项目,但我到处都在google上搜索。

错误信息:

参数类型“Null”不能分配给参数类型“User”。

如果用户为空,我想让应用程序进入登录页面,但我不知道为什么用户类不能为空。

这是我的代码:

class AppState {
  bool loading;
  User user;
  AppState(this.loading, this.user);
}
...
class _HomeWidgetState extends State<HomeWidget> {
  final FirebaseAuth _auth = FirebaseAuth.instance;
  final GoogleSignIn _googleSignIn = GoogleSignIn();
  int i = 0;
  final app = AppState(true, null); // Error line

  @override
  Widget build(BuildContext context) {
    if (app.loading) 
      return _loading();
    if (app.user == null) 
      return _loginPage();

    return _main();
  }

  ...
}

搜索了有关 dart 中 User 类的官方文档并用 google 搜索了我的错误消息

flutter firebase dart firebase-authentication
1个回答
1
投票

您可以使用以下方式声明变量:

User user;

此语句告诉 Flutter

user
将始终具有有效的
User
对象的值。它不能为空。

然后你打电话:

AppState(true, null); 

这意味着您正在尝试将

null
分配给
user
,这是不允许的(您自己的代码)。

您需要将

user
设置为空:

User? user;

或者,当您应用

User
时,您需要传递一个有效的
AppState
对象。

由于您对此似乎很陌生,我建议您查看 Flutter/Dart 文档中的 Understanding null safetySound null safety

© www.soinside.com 2019 - 2024. All rights reserved.