如何解决E / MethodChannel#plugins.flutter.io / firebase_auth16707:java.lang.IllegalArgumentException:给定的String为空或null
我在使用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
}
},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,null)
似乎我将一个空字符串放在某个地方,但是由于添加的自定义文本字段或类似内容,我似乎无法弄清我的感觉。任何帮助将不胜感激!
解决方法
.createUserWithEmailAndPassword(
email: _emailController.text,password: _passwordController.text,)
此方法中的email
和password
均为空。您必须使用TextFormField
并将控制器绑定到它,然后才能访问text
,例如:
body: Form(
key: _formKey,child: SingleChildScrollView(
child: Column(children: <Widget>[
Padding(
padding: EdgeInsets.all(20.0),child: TextFormField(
controller: emailController,decoration: InputDecoration(
labelText: "Enter Email Address",enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.0),),// The validator receives the text that the user has entered.
validator: (value) {
if (value.isEmpty) {
return 'Enter Email Address';
}
else if(!value.contains('@')){
return 'Please enter a valid email address!';
}
return null;
},Padding(
padding: EdgeInsets.all(20.0),child: TextFormField(
obscureText: true,controller: passwordController,decoration: InputDecoration(
labelText: "Enter Password",// The validator receives the text that the user has entered.
validator: (value) {
if (value.isEmpty) {
return 'Enter Password';
} else if (value.length < 6) {
return 'Password must be atleast 6 characters!';
}
return null;
},
检查文档
https://flutter.dev/docs/cookbook/forms/text-field-changes#2-use-a-texteditingcontroller
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。