Home > Enterprise >  Unhandled Exception: Null check operator used on a null value with signInUsingEmailPassword
Unhandled Exception: Null check operator used on a null value with signInUsingEmailPassword

Time:07-03

Hello I have old code working before null safety, after migration and firebase upgrade, I can't anymore login to an account. I have take care to register before login, all my firebase setup is OK but

When I try to print("${user?.email} or print("${user?.displayName} or print("${user?.emailVerified} It return null

Here is my code

First I have a FuturBuilder who call _initializeFirebase()

FutureBuilder(
          future: _initializeFirebase(),

   Future<FirebaseApp> _initializeFirebase() async {
        FirebaseApp firebaseApp = await Firebase.initializeApp();
         _currentUser = FirebaseAuth.instance.currentUser!.emailVerified;
    
        User? user = FirebaseAuth.instance.currentUser;
   
        return firebaseApp;
      }

After I have a raised button who call signInUsingEmailPassword

                   new RaisedButton(
                        shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
                        elevation: 5,
                        highlightElevation: 10,
                        color: Color(0xffff9a7b),
                        splashColor: Colors.white,
                        child :

                        new  Text("Charger mes données",textAlign: TextAlign.center,  style: TextStyle(color: Colors.white, fontWeight: FontWeight.w500, fontSize:15)),

                        padding: const EdgeInsets.all (15.0),
                        onPressed: () async{

                          _focusEmail.unfocus();
                          _focusPassword.unfocus();

                          if(_currentUser==false){
                            if (_formKey.currentState!
                                .validate()) {
                              setState(() {
                                _isProcessing = true;
                              });

                              User? user = await signInUsingEmailPassword(
                                email: _emailTextController.text.replaceAll(' ', ''),
                                password:
                                _passwordTextController.text.replaceAll(' ', ''),
                              );

                              setState(() {
                                _isProcessing = false;
                              });
                             
                            }
                          }

                        },
                      ),

After I have error , print("$user user"); return Unhandled Exception: Null check operator used on a null value

   Future<User?> signInUsingEmailPassword({

      String? email,
     String? password,
     
  }) async {
    FirebaseAuth auth = FirebaseAuth.instance;
    User? user;
    print("$user user");
    try {
      UserCredential userCredential = await auth.signInWithEmailAndPassword(
        email: email!,
        password: password!,
      );
      user = userCredential.user;
    } on FirebaseAuthException catch (e) {

      if (e.code == 'user-not-found') {
        print('No user found for that email.');
        showDialog(
            context: context,
            builder: (context) {
              return AlertDialog(
                title: Text('Erreur'),
                content: Text("Email incorrect"),

              );
            });
      } else if (e.code == 'wrong-password') {
        print('Erreur de mot de passe.');
        showDialog(
            context: context,
            builder: (context) {
              return AlertDialog(
                title: Text('Erreur'),
                content: Text("Mot de passe incorrect"),

              );
            });
      }
    }

    return user;
  }

CodePudding user response:

Instead of using !try using ? By adding an exclamation you mention that its not null but value is unknown. By adding a ? You mean that it maybe or maynot be null

print("${user?.email});

It also means that the user is null. Maybe there is some error in the firebase initialisation

  • Related