Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振:未来生成器不更新表单值_Flutter_Dart_Flutter Futurebuilder - Fatal编程技术网

Flutter 颤振:未来生成器不更新表单值

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.

使用Future builder,可以在加载页面时填充表单字段的早期保存值。 但当快照为空时,它必须显示空表单

当窗体有一些初始值时,下面的代码工作正常

     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也起到了作用,但温家宝试图将这两种代码结合起来,当时它不起作用