我尝试用从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,
);
}
}
引用数据从流构建器异步获得。
如果你能帮忙的话,我将不胜感激。
谢谢
1条答案
按热度按时间lp0sw83n1#
流中的数据可以正确地传递给该方法,但在
TextFormField
初始化时不能。我想目前它是这样工作的:
1.您的
_NameField1State
已初始化-widget.data
中没有数据,因此它不显示任何内容;1.您的
StreamBuilder
将数据推送到NameField1
小部件,您可以看到它。您可以通过将
initialData
添加到StreamBuilder
来检查情况是否如此。