alper borabay
alper borabay

Reputation: 29

Flutter Firebase Sign up working on emulator but not working on real apk

In my flutter app, I am using Firebase auth for login and sign up. When I am run this application on my android device emulator everything is fine but when I am using this app on my real mobile phone, Email TextFormField gives negative conditions("Please write a valid mail"). I don't know where is the problem. I tried more than one email but not working.

This is my TextFormField validator:

                  Container(
                  margin: EdgeInsets.all(20),
                  decoration: BoxDecoration(
                      color: Colors.white54,
                      borderRadius: BorderRadius.circular(18)
                  ),
                  child: Padding(
                    padding: const EdgeInsets.fromLTRB(20,0,15,0),
                    child: TextFormField(
                        validator: (value){
                          Pattern pattern = r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$';
                          RegExp regex = new RegExp(pattern);
                          // Null check
                          if(value.isEmpty){
                            return 'Bir email giriniz';
                          }
                          // Valid email formatting check
                          else if(!regex.hasMatch(value)){
                            return 'Please write a valid mail';
                          }
                          // success condition

                          return null;
                        },
                      style: TextStyle(color: myColor5),
                      controller: emailTextEditingController,
                      decoration: InputDecoration(

                          border: InputBorder.none,
                          fillColor: Colors.white,
                          labelText: "E-Posta",
                          labelStyle: TextStyle(
                              color:Colors.orange[900]
                      ),
                      ),

                    ),
                  ),
                ),

and this is my SignUp method:

signMeUp(){


if(formKey.currentState.validate()){

  Map<String, String> userInfoMap = {
    "name":userNameTextEditingController.text,
    "email": emailTextEditingController.text,
    "height": heightTextEditingController.text,
    "weight": weightTextEditingController.text,
    "weightTwo": weightTwoTextEditingController.text,
    "weightMevcut": weightMevcutTextEditingController.text,

    "biceps": bicepsTextEditingController.text,
    "bicepsTwo":bicepsTwoTextEditingController.text,
    "bicepsMevcut":bicepsMevcutTextEditingController.text,

    "bel": belTextEditingController.text,
    "belTwo":belTwoTextEditingController.text,
    "belMevcut":belMevcutTextEditingController.text,

    "gogus": gogusTextEditingController.text,
    "gogusTwo":gogusTwoTextEditingController.text,
    "gogusMevcut":gogusMevcutTextEditingController.text,

    "bacak": bacakTextEditingController.text,
    "bacakTwo":bacakTwoTextEditingController.text,
    "bacakMevcut":bacakMevcutTextEditingController.text,
  };

  HelperFunctions.saveUserEmailSharedPreference(emailTextEditingController.text);
  HelperFunctions.saveUserEmailSharedPreference(userNameTextEditingController.text,);
  HelperFunctions.saveUserHeightSharedPreference(heightTextEditingController.text,);
  HelperFunctions.saveUserWeightSharedPreference(weightTextEditingController.text);
  HelperFunctions.saveUserWeightTwoSharedPreference(weightTwoTextEditingController.text,);
  HelperFunctions.saveUserWeightTwoSharedPreference(weightMevcutTextEditingController.text,);

  HelperFunctions.saveUserBicepsSharedPreference(bicepsTextEditingController.text);
  HelperFunctions.saveUserBicepsTwoSharedPreference(bicepsTwoTextEditingController.text,);
  HelperFunctions.saveUserBicepsMevcutSharedPreference(bicepsMevcutTextEditingController.text,);

  HelperFunctions.saveUserBelSharedPreference(belTextEditingController.text);
  HelperFunctions.saveUserBelTwoSharedPreference(belTwoTextEditingController.text,);
  HelperFunctions.saveUserBelMevcutSharedPreference(belMevcutTextEditingController.text,);

  HelperFunctions.saveUserGogusSharedPreference(gogusTextEditingController.text);
  HelperFunctions.saveUserGogusTwoSharedPreference(gogusTwoTextEditingController.text,);
  HelperFunctions.saveUserGogusMevcutSharedPreference(gogusMevcutTextEditingController.text,);

  HelperFunctions.saveUserBacakSharedPreference(bacakTextEditingController.text);
  HelperFunctions.saveUserBacakTwoSharedPreference(bacakTwoTextEditingController.text,);
  HelperFunctions.saveUserBacakMevcutSharedPreference(bacakMevcutTextEditingController.text,);


  setState(() {
    isLoading = true;
  });
  authMethods.signUpWithEmailAndPassword(emailTextEditingController.text, passwordTextEditingController.text).then((val){


    databaseMethods.uploadUserInfoTwo(userInfoMap);
    HelperFunctions.saveUserLoggedInSharedPreference(true);
    setState(() {
      final FirebaseAuth auth = FirebaseAuth.instance;
      final User user = auth.currentUser;
      final uid = user.uid;


      FirebaseFirestore.instance.
      collection('users').
      doc(uid).
      update({
        "height": 0,
        "weight": 0,
        "weightTwo": 0,
        "weightMevcut": 0,

        "biceps": 0,
        "bicepsTwo":0,
        "bicepsMevcut":0,

        "bel": 0,
        "belTwo":0,
        "belMevcut":0,

        "gogus": 0,
        "gogusTwo":0,
        "gogusMevcut":0,

        "bacak": 0,
        "bacakTwo":0,
        "bacakMevcut":0,
      }).
      catchError((e) {
        print(e);
      });
    });
    Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => MainPage()));
  });
}
 }

Upvotes: 0

Views: 148

Answers (1)

Randal Schwartz
Randal Schwartz

Reputation: 44056

Ignoring the rest of your question, I struck on:

Pattern pattern = r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$';
                     

No. No no no. Do not use any email regex matcher that you have typed or cut-n-pasted. If it is shorter than the one on this web page: http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html then it is wrong.

Luckily, you can simply pull in a package that does exactly the right thing because it uses a parser that implements the RFC: https://pub.dev/packages/email_validator

Upvotes: 1

Related Questions