Flutter:Textformfield验证器数组不起作用

时间:2019-10-23 02:44:14

标签: flutter textfield

我正在处理一个Textformfields数组。数组可以超过50个。我想向服务器提交值数组。问题是当我执行验证器时,它将在没有错误消息之后验证数组中的前8个。滚动时也消失了。我在下面发布了我的代码:

void validateAndSave() {
    final form = _formKey.currentState;
    if (form.validate()) {

      _formKey.currentState.save();
      print('Form is valid');
    }
    else {
    //  _formKey.currentState.
      print('form is invalid');
    }

  }

    Widget singleItemList(int index) {
    Item item = itemList[index];

    return Container(
      width: MediaQuery.of(context).size.width,
      decoration: BoxDecoration(
        color: Colors.white,
      ),
      child:
      Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [






          Expanded(

            child:Padding(
              padding: const EdgeInsets.fromLTRB(20, 10, 10, 20),


              child: new TextFormField(
               controller: _controller[index],

              keyboardType: TextInputType.number,




                //onSubmitted: (text) {
              //  takeNumber(text, item.id);
              //},


                validator: (value) {
                  if (value.isEmpty) return 'value is required';

                },



                decoration: new InputDecoration(

                  border: new OutlineInputBorder(
                      borderSide: new BorderSide(color: Colors.indigo)),




                  labelText: itemList[index].id,

                  suffixStyle: const TextStyle(color: Colors.red)
              ),


              ),
            ),
          ),


        ],
      ),


    );

  }

请帮助我。预先感谢。

关于, 沙沙语

1 个答案:

答案 0 :(得分:2)

您是否考虑过用Column替换ListView.builder?
喜欢:

child: SingleChildScrollView(
    child: Column(
      children: List.generate(itemList.length, (index) {
        if (itemList.isEmpty) {
          return CircularProgressIndicator();
        } else {
          return singleItemList(index);
        }
      })
    ) 
  )

从ListView documentation

  

破坏   
从子视图中滚动出一个子视图时,关联的元素子树,状态和渲染对象将被破坏。列表中同一位置的新子视图将与新元素一起被懒惰地重新创建。 ,向后滚动并声明和渲染对象。