【问题标题】:Flutter:Array of Textformfield validator not workingFlutter:Textformfield验证器数组不起作用
【发布时间】:2023-03-21 19:18:02
【问题描述】:

我正在处理一组 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)
              ),


              ),
            ),
          ),


        ],
      ),


    );

  }

请帮助我。提前致谢。

问候, 萨蒂什

【问题讨论】:

  • 你试过Tuple的使用吗?

标签: flutter textfield


【解决方案1】:

您是否考虑过将 ListView.builder 替换为 Column?
像这样:

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

来自 ListView documentation:

毁灭
当子元素被滚动出视图时,相关的元素子树、状态和渲染对象将被销毁。 列表中相同位置的新子元素将与新元素一起延迟重新创建,回滚时状态和渲染对象。

【讨论】:

  • 完美的 alecsam 非常棒。非常感谢。天才
  • 很高兴能帮上忙!
猜你喜欢
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 2017-10-08
  • 1970-01-01
  • 2018-07-05
  • 2023-04-11
  • 2017-03-30
相关资源
最近更新 更多