我正在处理一个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)
),
),
),
),
],
),
);
}
请帮助我。预先感谢。
关于, 沙沙语
答案 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:
破坏
从子视图中滚动出一个子视图时,关联的元素子树,状态和渲染对象将被破坏。列表中同一位置的新子视图将与新元素一起被懒惰地重新创建。 ,向后滚动并声明和渲染对象。