大佬教程收集整理的这篇文章主要介绍了Flutter 长表单不保存所有 FormTextField 值,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我通过使用 ListVIEw.builder 生成 TextFormFIElds 构建了一个很长的表单。 如果我只生成几个 TextFormFIElds,事情似乎工作正常,但是当我有很多时,当我点击底部的保存按钮时,它似乎只保存其中的一些。
我想知道是否需要实现 async/await 之类的。
就功能而言,表单非常标准。我引用了 this repo,但没有单独列出每个 TextFormFIEld,我只有一个 Widget 函数并以这种方式构建一个 ListVIEw。
这是我的代码的样子(注意:实际上大约有 20 个变量,我在下面的代码中只列出了 5 个。另外,这是在一个有状态的小部件中):
final _formKey = GlobalKey<FormState>();
String var1 = "";
String var2 = "";
String var3 = "";
String var4 = "";
String var5 = "";
List<String> _varListnames = [
'var1','var2','var3','var4','var5'
];
Map myMap = {};
@overrIDe
Widget build(BuildContext context) {
return SafeArea(
child: Form(
key: _formKey,child: ListVIEw.builder(
itemCount: _varListnames.length + 1,itemBuilder: (context,index) {
return index == _varListnames.length
? buildsubmit()
: experimentParameterWidget(
paramMapKey: _varListnames[index],paramMap: myMap,); // Text(expParamKeys[index])
}),),);
}
Widget myWidget({required String myKey,required myMap}) => TextFormFIEld(
decoration: inputdecoration(
labelText: myKey,border: Outlineinputborder(),valIDator: (value) {
if (value!.length < 2) {
return 'Enter at least 2 characters';
}
},onSaved: (value) {
print("SAVING $myKey as $value");
setState(() {
myMap[myKey] = value;
});
},);
Widget buildsubmit() => padding(
padding: const EdgeInsets.all(16.0),child: Column(
children: [
Elevatedbutton(
onpressed: () {
setState(() {
final isValID = _formKey.currentState!.valIDate();
if (isValID) {
print("IS VALID");
_formKey.currentState!.save();
final message = expParams;
final snackbar = Snackbar(
content: Text(
Json.encode(message),style: TextStyle(FontSize: 20),backgroundcolor: colors.green,);
ScaffoldMessenger.of(context).showSnackbar(snackbar);
}
});
print('myMap: $myMap');
print('expParams length: ${myMap.length}');
},child: Text("Save")),padding(
padding: const EdgeInsets.symmetric(vertical: 24),child: Elevatedbutton(onpressed: () {},child: Text("Run")),],);
这导致底部的一个小snackbar显示了myMap的几个键值对,终端中的print语句又显示了几个(不是一样的)。
我需要一份完整的清单。
最终目标是在另一个选项卡上显示 myMap 键/值对。
如果您需要更多说明,请告诉我。
感谢您的帮助。
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的Flutter 长表单不保存所有 FormTextField 值全部内容,希望文章能够帮你解决Flutter 长表单不保存所有 FormTextField 值所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。