表单的字段未初始化

公鸡

有一个状态类的形式

class MyCustomFormState extends State<MyCustomForm> {
  final _formKey = GlobalKey<FormState>();
  String _email, _password;

并且存在其中一种形式initialValue使用

TextFormField(
    initialValue: _email,
    validator: (value) {
        if (value.isEmpty) {
            return 'Please enter some text';
        }
        _email = value;
        return null;
    },
),

要初始化我使用的电子邮件值

void initState() {
    super.initState();

    _getEmail().then((value) {
      setState(() {
        _email = value;
        print('_email was $_email');
      });
    });
    ...

在日志中,我获取了真实的电子邮件值

_email是[email protected]

但是表单的字段不会更新,即,在显示熨平板时,电子邮件字段为空。为什么?

yusufpats

这是因为_getEmail()似乎是一个async功能。您正在_getEmail()从中调用函数initState()

此时,UI不会等待async过程完成(await),build()方法会被调用,并且String _email仍然null(未初始化)。

解决方案是在异步完成后TextFormField使用电子邮件的值更新TextEditingController_getEmail()

您的代码应如下所示:

  1. TextEditingController为电子邮件字段创建一个对象
TextEditingController emailFieldController = TextEditingController();
  1. 将控制器附加到电子邮件字段:
TextFormField(
    controller: emailFieldController,
    validator: (value) {
        if (value.isEmpty) {
            return 'Please enter some text';
        }
        _email = value;
        return null;
    },
),
  1. 在您的_getEmail()函数中,更新发送给控制器的电子邮件值:
_getEmail().then((value) {
      emailFieldController.text = value;
   });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对象内部的未初始化字段

来自分类Dev

从Django中的url参数初始化表单输入字段

来自分类Dev

用户表单未触发初始化或激活事件

来自分类Dev

用户表单未触发初始化或激活事件

来自分类Dev

JavaFX Controller未初始化UI字段

来自分类Dev

未捕获的错误:该属性或字段尚未初始化

来自分类Dev

ActionScript检查未初始化的字段类

来自分类Dev

ActionScript检查未初始化的字段类

来自分类Dev

初始化表单集

来自分类Dev

初始化结构的字段

来自分类Dev

继承初始化的字段

来自分类Dev

最终字段的初始化

来自分类Dev

条带未初始化

来自分类Dev

JqGrid未初始化

来自分类Dev

对象未初始化

来自分类Dev

ListView未初始化

来自分类Dev

变量未初始化

来自分类Dev

递归初始化:当我访问“类”字段时未调用静态初始化器

来自分类Dev

继承字段与初始化字段

来自分类Dev

继承字段与初始化字段

来自分类Dev

SwiftUI:初始化未初始化数组

来自分类Dev

未初始化的变量已被初始化

来自分类Dev

Django表单使用“此字段为必填”消息初始化

来自分类Dev

了解Django表单初始化

来自分类Dev

模态表单初始化/重新渲染

来自分类Dev

表单提交后文档初始化

来自分类Dev

Django - 表单初始化如何工作?

来自分类Dev

使用Checker Framework时,避免在注入的字段上出现“未初始化”错误

来自分类Dev

通过字段访问has_many时,类名不同的“未初始化常量”错误