【发布时间】:2020-12-07 08:21:13
【问题描述】:
我在使用 firebase 进行电子邮件身份验证时遇到问题。我不知道如何解决它,我尝试了很多在线建议,但似乎没有一个有效,所以我有点卡在这件事上
代码-
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_facebook_login/flutter_facebook_login.dart';
import 'package:flutter_auth/main.dart';
class Body extends StatefulWidget {
@override
_BodyState createState() => _BodyState();
}
class _BodyState extends State<Body> {
final _formKey = GlobalKey<FormState>();
TextEditingController _emailController = TextEditingController();
TextEditingController _passwordController = TextEditingController();
@override
Widget build(BuildContext context) {
Size size = MediaQuery
.of(context)
.size;
return Background(
child: SingleChildScrollView(
child: Form(
key: _formKey,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"SIGNUP",
style: TextStyle(fontWeight: FontWeight.bold),
),
SizedBox(height: size.height * 0.03),
SvgPicture.asset(
"assets/icons/signup.svg",
height: size.height * 0.35,
),
RoundedInputField(
hintText: "Your Email",
onChanged: (val) {
},
),
RoundedPasswordField(
onChanged: (val) {
},
),
RoundedButton(
text: "SIGNUP",
press: ()
async {
try {
FirebaseUser user = (await FirebaseAuth.instance
.createUserWithEmailAndPassword(
email: _emailController.text,
password: _passwordController.text,)).user;
if(user != null){
UserUpdateInfo updateUser = UserUpdateInfo();
user.updateProfile(updateUser);
Navigator.of(context).pushNamed(AppRoutes.menu);
}
} catch (e) {
print(e);
_passwordController.text = "";
_emailController.text = "";
// TODO: alertdialog with error
}
},
),
SizedBox(height: size.height * 0.03),
AlreadyHaveAnAccountCheck(
login: false,
press: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return LoginScreen();
},
),
);
},
),
OrDivider(),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SocalIcon(
iconSrc: "assets/icons/fbb.svg",
press: () => signUpWithFacebook(),
),
SocalIcon(
iconSrc: "assets/icons/twitterr.svg",
press: () {},
),
SocalIcon(
iconSrc: "assets/icons/google.svg",
press: () => _signIn(context),
),
],
)
],
),
),
),
);
}
圆形输入字段--
import 'package:flutter/material.dart';
import
'package:flutter_auth/login_Signup/components/text_field_container.dart';
import 'package:flutter_auth/constants.dart';
Import 'package:firebase_auth/firebase_auth.dart';
import
'package:flutter_auth/login_Signup/Screens/Signup/components/body.dart';
class RoundedInputField extends StatefulWidget {
final String hintText;
final IconData icon;
final ValueChanged<String> onChanged;
const RoundedInputField({
Key key,
this.hintText,
this.icon = Icons.person,
this.onChanged,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return TextFieldContainer(
child: TextFormField(
controller: _emailController,
onChanged: widget.onChanged,
cursorColor: kPrimaryColor,
decoration: InputDecoration(
icon: Icon(
widget.icon,
color: kPrimaryColor,
),
hintText: widget.hintText,
border: InputBorder.none,
),
),
);
}
}
我的调试控制台!!--
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): Failed to handle
method call
E/MethodChannel#plugins.flutter.io/firebase_auth(16707):
java.lang.IllegalArgumentException: Given String is empty or null
E/MethodChannel#plugins.flutter.io/firebase_auth(16707):
at
com.google.android.gms.common.internal.Preconditions.checkNotEmpty(com.google.android.gms:play-services-basement@@17.1.1:5)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at
com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(com.google.firebase:firebase-auth@@19.3.2:288)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at
io.flutter.plugins.firebaseauth.FirebaseAuthPlugin.handleCreateUserWithEmailAndPa
ssword(FirebaseAuthPlugin.java:361)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at
io.flutter.plugins.firebaseauth.FirebaseAuthPlugin.onMethodCall(FirebaseAuthPlugin.java:143)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:230)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at android.os.MessageQueue.next(MessageQueue.java:335)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at android.os.Looper.loop(Looper.java:183)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at android.app.ActivityThread.main(ActivityThread.java:7656)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I/flutter (16707): PlatformException(error, Given String is empty or null, null)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): Failed to handle method call
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): java.lang.IllegalArgumentException: Given String is empty or null
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at com.google.android.gms.common.internal.Preconditions.checkNotEmpty(com.google.android.gms:play-services-basement@@17.1.1:5)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(com.google.firebase:firebase-auth@@19.3.2:288)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at io.flutter.plugins.firebaseauth.FirebaseAuthPlugin.handleCreateUserWithEmailAndPassword(FirebaseAuthPlugin.java:361)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at io.flutter.plugins.firebaseauth.FirebaseAuthPlugin.onMethodCall(FirebaseAuthPlugin.java:143)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:230)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at android.os.MessageQueue.next(MessageQueue.java:335)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at android.os.Looper.loop(Looper.java:183)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at android.app.ActivityThread.main(ActivityThread.java:7656)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
E/MethodChannel#plugins.flutter.io/firebase_auth(16707): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I/flutter (16707): PlatformException(error, Given String is empty or null, null)
似乎我在某处放置了一个空字符串,但由于我添加的自定义文本字段或类似的东西,我似乎无法弄清楚我的感觉在哪里。任何形式的帮助将不胜感激!
【问题讨论】:
-
您需要将 TextEditingControllers 绑定到您的输入字段。您至少可以显示其中一个 RoundedInputField 小部件代码,以便您可以指出正确的方向。
-
我已经添加了输入框
-
@HelpMeGetGood 你试过答案了吗?
-
是的,这是它的更新版本仍然有错误
-
我添加了文本表单字段。仍然收到错误。
标签: firebase flutter authentication dart