【问题标题】:I'm having the following error in the console and i been trying to fix it for hours我在控制台中遇到以下错误,我已经尝试修复了几个小时
【发布时间】:2021-12-06 21:55:04
【问题描述】:

This the is error console is showing. It says it's in Root widget

这是我的代码

'''

  initState: (_) async {
    Get.put<UserController>(UserController());
  }, 
  builder: (_) {
    if (Get.find<AuthController>().user?.isEmpty == true){
      return HomeScreen();
    } else {
      return Login();
    }
  }

'''

AuthController 和 firebase,我使用 Rxn 来保证 null 安全性。

'''

class AuthController extends GetxController {
  FirebaseAuth _auth = FirebaseAuth.instance;
  Rxn<User> _firebaseUser = Rxn<User>();

  String? get user => _firebaseUser.value?.email;

  @override
  void onInit() {
    _firebaseUser.bindStream(_auth.authStateChanges());
  }
}

'''

用户控制器

  Rx<UserModel> _userModel = UserModel().obs;

  UserModel? get user => _userModel.value;

  set user(UserModel? value) => this._userModel.value = value!;

  void clear(){
    _userModel.value = UserModel();
  }

【问题讨论】:

    标签: flutter dart null-safety


    【解决方案1】:

    您正在使用! 强制可空用户变为非空:

    if (Get.find<AuthController>().user!.isEmpty){
    

    相反,使用? 对其进行空检查

    if (Get.find<AuthController>().user?.isEmpty == true){
    

    您几乎不想使用! 强制为空,除非您已经在代码中早些时候对其进行了空检查。

    【讨论】:

    • 感谢 Nico 的帮助,我在发布这个问题之前尝试过,它给了我这个错误 可空表达式不能用作条件。在将其用作条件之前尝试检查该值是否不是“空”。dartunchecked_use_of_nullable_value
    • 哦,对了,您需要明确检查要测试的布尔值是否可以为空。我已经更新了答案。
    • 请帮忙,照片中仍然出现同样的错误:(
    • class AuthController extends GetxController { FirebaseAuth _auth = FirebaseAuth.instance; Rxn&lt;User&gt; _firebaseUser = Rxn&lt;User&gt;(); String? get user =&gt; _firebaseUser.value?.email; @override void onInit() { _firebaseUser.bindStream(_auth.authStateChanges()); } } 这是我的 AuthController,如果有帮助的话
    • 请更新您的问题并将其放入代码块中。你也可以包括你的 UserController 吗?
    猜你喜欢
    • 1970-01-01
    • 2022-11-05
    • 2015-12-23
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 2022-10-19
    相关资源
    最近更新 更多