我在PageView中有表格,每页上都有一个唯一的表格,我需要对它们全部进行验证。所以我写了那个代码...
PageView.builder(
contoller: controller,
itemCount: pageValues.length,
itemBuilder: (context, index) {
return Form(
key: formKeys[index]
child: Column(
TextFormField(
controller: someController,
validator: (value) => value.isEmpty
? "Enter something"
: null
)
)
)
}
)
我将表单密钥存储在可增长的列表中,因此当我添加新页面时,表单密钥列表会使用新的 GlobalKey
我有用于验证所有表格的按钮
Button(
onPressed: () {
if(formKeys.every((element) => element.currentState.validate())){
some actions...
}
}
)
所以当我按下按钮时,我会得到这个异常
The method 'validate' was called on null.
Receiver: null
Tried calling: validate()
更新
我试图打印每个键的currentState并在控制台中看到了:
I/flutter (30149): null
I/flutter (30149): FormState#84571
我有两页,当前我在第二页,但是如果我转到第一页并再次打印currentState,我会得到:
I/flutter (30149): FormState#65c3d
I/flutter (30149): null
所以现在我需要知道在切换页面时如何保存或保持表单键的状态。