Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/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 ';呼叫';从有状态小部件调用父回调函数时为null_Flutter_Widget - Fatal编程技术网

Flutter ';呼叫';从有状态小部件调用父回调函数时为null

Flutter ';呼叫';从有状态小部件调用父回调函数时为null,flutter,widget,Flutter,Widget,我想有一个多节表单,它有几个子表单,当完成并验证后将回调到父窗口小部件,以便转到下一个子表单 我的问题是我一直收到一个错误,说函数为null,我不知道为什么 我尝试在子对象的StatefulWidget中使用函数,但在通过“complete”函数调用父对象时,我总是收到一个错误,说该函数为null I/flutter (23821): ══╡ EXCEPTION CAUGHT BY GESTURE ╞════════════════════════════════════════════════

我想有一个多节表单,它有几个子表单,当完成并验证后将回调到父窗口小部件,以便转到下一个子表单

我的问题是我一直收到一个错误,说函数为null,我不知道为什么

我尝试在子对象的StatefulWidget中使用函数,但在通过“complete”函数调用父对象时,我总是收到一个错误,说该函数为null

I/flutter (23821): ══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
I/flutter (23821): The following NoSuchMethodError was thrown while handling a gesture:
I/flutter (23821): The method 'call' was called on null.
I/flutter (23821): Receiver: null
I/flutter (23821): Tried calling: call()
我认为我做得很正确,但对于下一步要尝试什么,我有点不知所措,下面是我的代码:

父窗口小部件


class CreateForm extends StatefulWidget {

  CreateForm({
    Key key
  }): super(key: key);

  CreateFormState createState() => CreateFormState();
}

class CreateFormState extends State < CreateForm > {

  bool userDetailsCompleted = false;

  final formKey = GlobalKey < FormState > ();

  @override
  Widget build(BuildContext context) {
    return !userDetailsCompleted ? UserDetailsForm(
      completed: () {
        print("testing");
        // setState(() {
        //   userDetailsCompleted = true;
        // });
      },

    ) : nextSection(

    );
  }
}


类CreateForm扩展StatefulWidget{
创造形式({
钥匙
}):super(key:key);
CreateFormState createState()=>CreateFormState();
}
类CreateFormState扩展了状态{
bool userDetailsCompleted=false;
最终formKey=GlobalKey();
@凌驾
小部件构建(构建上下文){
return!userDetailsCompleted?UserDetailsForm(
已完成:(){
打印(“测试”);
//设置状态(){
//userDetailsCompleted=true;
// });
},
):下一节(
);
}
}
子部件


class UserDetailsForm extends StatefulWidget {

  final Function completed;

  UserDetailsForm({
    @required this.completed,
    Key key
  }): super(key: key);

  UserDetailsFormState createState() => UserDetailsFormState();

}

class UserDetailsFormState extends State < UserDetailsForm > {

  @override
  Widget build(BuildContext context) {
    return Form(
        child: CustomButton(
              size: 15,
              text: 'Submit',
              onPressed: () {
                print('UserDetails account form submit');
                widget.completed();
              },
            )
          );
        }
    }



类UserDetailsForm扩展StatefulWidget{
最终功能完成;
用户详细信息表单({
@要求完成此项,
钥匙
}):super(key:key);
UserDetailsFormState createState()=>UserDetailsFormState();
}
类UserDetailsFormState扩展状态{
@凌驾
小部件构建(构建上下文){
报税表(
子:自定义按钮(
尺码:15,
文本:“提交”,
已按下:(){
打印('UserDetails帐户表单提交');
widget.completed();
},
)
);
}
}

我在本地尝试了您的代码,它可以正常工作。我认为您只需要重新启动Flutter,因为可能您刚才刚刚将Stateles替换为Stateful小部件

全面运作回购 您也可以在本地构建它

演示