必须提供电子邮件地址/电子邮件地址格式错误
An email address must be provided / The email address is badly formatted
我收到“提示:[firebase_auth/missing-email] 必须提供电子邮件地址。”当我注册时。使用虚拟@gmail.com
并且“flutter:[firebase_auth/invalid-email] 电子邮件地址格式错误。”当我使用注册帐户登录时。 (之前有一封有效的电子邮件,也通过 firebase 网站创建了一个帐户,为两者获取相同的消息)
我看到 trim() 是一个可能的解决方案,但不知道如何实施。我确保没有空格...你能告诉我我的代码有什么问题或遗漏了什么吗?
这是我的注册页面中的一些代码(在我的登录页面上看起来几乎一样),如果您需要查看更多内容,请告诉我
String email = '';
String password = '';
String error = '';
TextFormField(
textInputAction: TextInputAction.next,
style: TextStyle(color: Colors.white),
decoration: textInputDecoration.copyWith(
hintText: ('Enter Email'),
hintStyle: TextStyle(color: Colors.white),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.white),
),
),
keyboardType: TextInputType.emailAddress,
validator: (value) {
if (value!.isEmpty) {
return 'Email is required';
}
if (value.isNotEmpty) {
final RegExp regex = RegExp(
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,}))$');
if (!regex.hasMatch(value))
return 'Enter a valid email';
else
return null;
} else {
return 'Enter a valid email';
}
},
),
ElevatedButton(
child: Text(
'Register',
style: TextStyle(color: Colors.white),
),
style: ElevatedButton.styleFrom(
primary: Color(0xFF162242)),
onPressed: () async {
if (_formKey.currentState!.validate()) {
setState(() => loading = true);
dynamic result =
await _auth.registerWithEmailAndPassword(
email, password);
if (result == null) {
setState(() {
error = 'please enter valid email';
loading = false;
});
}
}
}),
等等,我想知道你到底在做什么!
您已将电子邮件和密码明确定义为空字符串。
String email = '';
String password = '';
String error = '';
并将这些空字符串传递给 _auth.registerWithEmailAndPassword(email, password)
?
解决方案是使用 TextEditingController 对象并从输入字段中收集值,然后将它们传递给注册方法。
final emailCtrl =TextEditingController();
final passCtrl = TextEditingController();
...
TextFormField(
controller: emailCtrl,
....
),
TextFormField(
controller: passCtrl,
....
),
...
ElevatedButton(
onPressed: () async {
String email = emailCtrl.text.trim();
String pass = passCtrl.text.trim();
...
dynamic result = await _auth.registerWithEmailAndPassword(email, password);
...
}
)
我收到“提示:[firebase_auth/missing-email] 必须提供电子邮件地址。”当我注册时。使用虚拟@gmail.com
并且“flutter:[firebase_auth/invalid-email] 电子邮件地址格式错误。”当我使用注册帐户登录时。 (之前有一封有效的电子邮件,也通过 firebase 网站创建了一个帐户,为两者获取相同的消息)
我看到 trim() 是一个可能的解决方案,但不知道如何实施。我确保没有空格...你能告诉我我的代码有什么问题或遗漏了什么吗?
这是我的注册页面中的一些代码(在我的登录页面上看起来几乎一样),如果您需要查看更多内容,请告诉我
String email = '';
String password = '';
String error = '';
TextFormField(
textInputAction: TextInputAction.next,
style: TextStyle(color: Colors.white),
decoration: textInputDecoration.copyWith(
hintText: ('Enter Email'),
hintStyle: TextStyle(color: Colors.white),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.white),
),
),
keyboardType: TextInputType.emailAddress,
validator: (value) {
if (value!.isEmpty) {
return 'Email is required';
}
if (value.isNotEmpty) {
final RegExp regex = RegExp(
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,}))$');
if (!regex.hasMatch(value))
return 'Enter a valid email';
else
return null;
} else {
return 'Enter a valid email';
}
},
),
ElevatedButton(
child: Text(
'Register',
style: TextStyle(color: Colors.white),
),
style: ElevatedButton.styleFrom(
primary: Color(0xFF162242)),
onPressed: () async {
if (_formKey.currentState!.validate()) {
setState(() => loading = true);
dynamic result =
await _auth.registerWithEmailAndPassword(
email, password);
if (result == null) {
setState(() {
error = 'please enter valid email';
loading = false;
});
}
}
}),
等等,我想知道你到底在做什么!
您已将电子邮件和密码明确定义为空字符串。
String email = '';
String password = '';
String error = '';
并将这些空字符串传递给 _auth.registerWithEmailAndPassword(email, password)
?
解决方案是使用 TextEditingController 对象并从输入字段中收集值,然后将它们传递给注册方法。
final emailCtrl =TextEditingController();
final passCtrl = TextEditingController();
...
TextFormField(
controller: emailCtrl,
....
),
TextFormField(
controller: passCtrl,
....
),
...
ElevatedButton(
onPressed: () async {
String email = emailCtrl.text.trim();
String pass = passCtrl.text.trim();
...
dynamic result = await _auth.registerWithEmailAndPassword(email, password);
...
}
)