Flutter 颤振:未来生成器不更新表单值
使用Future builder,可以在加载页面时填充表单字段的早期保存值。 但当快照为空时,它必须显示空表单 当窗体有一些初始值时,下面的代码工作正常Flutter 颤振:未来生成器不更新表单值,flutter,dart,flutter-futurebuilder,Flutter,Dart,Flutter Futurebuilder,使用Future builder,可以在加载页面时填充表单字段的早期保存值。 但当快照为空时,它必须显示空表单 当窗体有一些初始值时,下面的代码工作正常 Widget build(BuildContext context) { return SafeArea( child: Scaffold( body: Container( height: MediaQuery.of(context).size.
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: Container(
height: MediaQuery.of(context).size.height,
child:FutureBuilder(
future: _getPersonalInfoFormInitialValue(),
builder: (context, snapshot) => snapshot.hasData ? buildFormBuilder(context, snapshot.data) : Center(child: Text('Loading .....')),
),
),
),
);
}
当snapshot.data为null时,此代码工作正常,它按预期显示空表单
FutureBuilder(
future: _getPersonalInfoFormInitialValue(),
builder: (context, snapshot) => buildFormBuilder(context, snapshot.data) ,
),
因此,我将两者结合起来,使表格适用于所有情况
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: Container(
height: MediaQuery.of(context).size.height,
child:FutureBuilder(
future: _getPersonalInfoFormInitialValue(),
builder: (context, snapshot) => snapshot.hasData ? buildFormBuilder(context, snapshot.data) : buildFormBuilder(context, null) ,
),
),
),
);
}
buildFormBuilder方法:
FormBuilder buildFormBuilder(BuildContext context, data) {
return FormBuilder(
key: _personalDetailFormKey,
initialValue: data ?? {},
autovalidate: true,
child: Stack(
children: <Widget>[
.........
_submitButton(() {
_submitPersonalDetailInfoForm();
}, 'Submit'),
],
),
);
}
现在,在这两种情况下,它只显示表单的空字段。eventhough snapshot.data具有值,但未填充到表单字段中。
我尝试了Future.delayed(const持续时间(秒:10),(){});仍然面临这个问题
某个地方出了问题,无法识别,感谢您的帮助!!谢谢,也许是因为FutureBuilder不是孩子:
FutureBuilder(
future: _getPersonalInfoFormInitialValue(),
builder: (context, snapshot) => buildFormBuilder(context, snapshot.data) ,
),
也许这是因为Futurebuilder不是一个孩子,在下一个版本中它是:
孩子:FutureBuilder可能是因为FutureBuilder不是孩子:
FutureBuilder(
future: _getPersonalInfoFormInitialValue(),
builder: (context, snapshot) => buildFormBuilder(context, snapshot.data) ,
),
也许这是因为Futurebuilder不是一个孩子,在下一个版本中它是:
child:FutureBuilder共享自定义小部件的代码。@Asadhamed buildFormBuilder代码已添加将不清楚,您可以共享tye future的代码!这就是所有的代码。。。rest通常是表单字段,没有其他内容。我指的是分配给future builder的future代码。共享自定义小部件的代码。@Asadhamed buildFormBuilder code Added不清楚,您可以共享tye future的代码!这就是所有的代码。。。rest通常是表单字段,没有其他内容。我指的是分配给未来构建器的未来代码。在这两种情况下,它的子对象,第二个未来构建器,也同样起作用。第一个未来建设者也起了作用,但温家宝试图将这两种代码结合起来,当时它在两种情况下都不起作用,只提到了它的孩子,第二个未来建设者也起了作用。FirstFutureBuilder也起到了作用,但温家宝试图将这两种代码结合起来,当时它不起作用