Flutter TextField值在ios设备上始终为空



我目前正在iPhone 8和Android moto G8上测试我的Flutter应用程序。

然而,我遇到的问题是,虽然在我的Android moto G8上一切都很好,但在我的iPhone上,似乎每当我更改TextField时,前一个TextField中的值就会变为null,即:

flutter: This is in error: 'package:firebase_auth/src/firebase_auth.dart': Failed assertion: line 174 pos 12: 'email != null': is not true.

但当我在设备上打字时,打印输出是:

flutter: This is in email:test@gmail.com, value: test@gmail.com

这是我的自定义文本字段的代码:

class InputTextFields extends StatefulWidget {
InputTextFields({this.title, this.obscureText, this.setValue});
final String title;
final bool obscureText;
Function setValue;
final TextEditingController _controller = TextEditingController();
@override
_InputTextFieldsState createState() => _InputTextFieldsState();
}
class _InputTextFieldsState extends State<InputTextFields> {
@override
Widget build(BuildContext context) {
String hintText;
return Container(
padding: EdgeInsets.only(bottom: 10, left: 35, right: 35),
child: TextField(
obscureText: widget.obscureText,
decoration: InputDecoration(
labelText: widget.title,
labelStyle: TextStyle(
fontFamily: 'Montserrat',
fontWeight: FontWeight.bold,
color: Colors.grey),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: Colors.grey,
),
),
hintText: hintText,
),
onChanged: widget.setValue,
),
);
}
}

因此,我确信TextField按预期工作,但错误仍然存在。你知道我该怎么解决这个问题吗?

问题似乎来自TextField中的onChanged: widget.setValue。您的函数正在使上一个TextField为null。检索TextField值的最佳方法是使用TextEditingController。为了在自定义TextField中使用TextEditingController,您必须将其作为参数传递。

class InputTextFields extends StatefulWidget {
InputTextFields({this.title, this.obscureText, this.controller});
final String title;
final bool obscureText;
final TextEditingController controller;
}

在您的文本字段中:

controller:widget.controller

这就是你如何使用新的自定义文本字段:

final TextEditingController myController=TextEditingController();
InputTextFields(title:"Test",obscureText:false,controller:myController),

我认为您正在尝试验证TextField的值是否为电子邮件。您可以使用RegExp或使用https://pub.dev/packages/email_validator包裹您也可以使用TextFormField而不是TextField来检查TextField的值是否为null。看看这个:https://flutter.dev/docs/cookbook/forms/validation.祝你好运

相关内容

  • 没有找到相关文章

最新更新