-1

这是错误控制台正在显示。它说它在 Root 小部件中

这是我的代码

'''

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

'''

AuthController 和 firebase,我使用 Rxn 来保证空值安全。

'''

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();
  }
4

1 回答 1

1

您正在使用以下命令强制可空用户变为非空!

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

相反,空检查它?

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

!除非您已经在代码中较早地对它进行了空检查,否则您几乎从不想强制使用可为空的。

于 2021-10-20T04:04:32.657 回答