Flutter点击注册按钮报firebase_auth/invalid-email邮箱格式错误求助
问题根源
- 核心错误是输入框内容获取方式错误:你直接调用
TextEditingController的toString()方法,拿到的是控制器对象本身的描述字符串,并非用户输入的邮箱/密码文本,传给Firebase的内容不符合邮箱格式规则,因此抛出格式错误。 - 同时存在两个隐含错误:
- 你已经在
main函数中完成了Firebase初始化,按钮点击回调中重复调用Firebase.initializeApp()属于多余操作 - 你注册的路由路径是
/first,跳转时写的是/First_Page,路径不匹配后续会触发路由找不到的报错
- 你已经在
修复方案
只需要替换按钮点击回调的逻辑即可,修正后的代码如下:
FlatButton( color: Colors.blue, child: Text('Sign-up'), onPressed: () async { // 去掉重复的Firebase初始化逻辑 // 通过.text属性获取输入框的真实输入内容 email = _user.text; password = _pass.text; try { final newuser = await _auth.createUserWithEmailAndPassword( email: email.trim(), password: password.trim(), ); if (newuser.user != null) { // 路由路径要和注册的路径保持一致 Navigator.pushNamed(context, '/first'); } } catch (e) { // 补充异常捕获方便后续排查问题 print('注册失败:$e'); } }, )
额外优化建议
- 可以给输入框增加前置格式校验,提交前先判断输入内容是否符合邮箱格式,减少不必要的接口请求
- 密码输入框补充
obscureText: true属性,隐藏输入的密码内容 - 目前你使用的
FlatButton已经在新版Flutter中被废弃,可以替换为TextButton或者ElevatedButton适配新版本
内容的提问来源于stack exchange,提问作者Praveen Kumar
相关产品推荐
相关产品推荐

