PageView.builder中的多表单验证

时间:2020-07-08 09:28:16

标签: flutter dart

我在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

所以现在我需要知道在切换页面时如何保存或保持表单键的状态。

Screenshot of widget

0 个答案:

没有答案