程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Flutter 长表单不保存所有 FormTextField 值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Flutter 长表单不保存所有 FormTextField 值?

开发过程中遇到Flutter 长表单不保存所有 FormTextField 值的问题如何解决?下面主要结合日常开发的经验,给出你关于Flutter 长表单不保存所有 FormTextField 值的解决方法建议,希望对你解决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,请注明来意。
标签: