Reputation: 29
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
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