dart 未初始化TextFormField中的初始值

lh80um4z  于 2023-09-28  发布在  其他
关注(0)|答案(1)|浏览(84)

我尝试用从Firestore获取的数据填充表单,为此我使用了initialvalue方法。但由于某种原因,即使该值已正确传递给该方法,也不会显示该值。如果我传递一个像'Hello'这样的直接文本,它会显示出来,但当我给予它一个对象(比如widget.data.text)时就不会了。我也试过使用textcontroller,但遇到了同样的问题。
这是我的一个字段的代码。

class NameField1 extends StatefulWidget {
  const NameField1({super.key, this.validator, this.fnode, this.nfocusnode, this.onChanged, this.data});

  final FormFieldValidator<String?>? validator;
  final FocusNode? fnode;
  final ReferalData? data;
  final FocusNode? nfocusnode;
  final ValueChanged<String>? onChanged;

  @override
  State<NameField1> createState() => _NameField1State();
}

class _NameField1State extends State<NameField1> {
  @override
  Widget build(BuildContext context) {
    return TextFormField(
      style: const TextStyle(
        color: Colors.white,
        fontSize: 22,
      ),
      autocorrect: false,
      initialValue: widget.data?.Company,
      // controller: widget.tCont,
      enableSuggestions: false,
      decoration: const InputDecoration(
        contentPadding: EdgeInsets.all(0),
        border: InputBorder.none,
        labelStyle: TextStyle(fontSize: 18),
        hintText: 'Name',
        hintStyle: TextStyle(
          fontSize: 22,
        ),
      ),
      focusNode: widget.fnode,
      onFieldSubmitted: (_) => widget.nfocusnode!.requestFocus(),
      validator: widget.validator,
      onChanged: widget.onChanged,
    );
  }
}

引用数据从流构建器异步获得。
如果你能帮忙的话,我将不胜感激。
谢谢

lp0sw83n

lp0sw83n1#

流中的数据可以正确地传递给该方法,但在TextFormField初始化时不能。
我想目前它是这样工作的:
1.您的_NameField1State已初始化-widget.data中没有数据,因此它不显示任何内容;
1.您的StreamBuilder将数据推送到NameField1小部件,您可以看到它。
您可以通过将initialData添加到StreamBuilder来检查情况是否如此。

相关问题