如何在颤振中按下的按钮上创建地图值列表

How do I create a list of map values on a button pressed in flutter

我正在尝试创建一个值列表,例如

{ 
"name1" : "one"
},

我从文本字段中得到上面提到的“一个”。假设我在三个单独的文本字段中输入了三个这样的值。 现在,当我按下提交按钮时,我必须创建一个名为“名称”的列表

names: [
{ 
"name1" : "one"
},
{ 
"name2" : "two"
},
{ 
"name3" : "three"
},
]

这里的“一”、“二”、“三”是textField值,我需要在有按钮点击事件时生成其余值

(我必须为 http post 创建许多这样的内容,我稍后会做,所以请随时让我知道更好的方法(如果存在)或者如果我的过程请更正我'标题错误)

你可以这样做:

List names = [
    {"name1": "one"},
    {"name2": "two"},
    {"name3": "three"},
  ];
  @override
  Widget build(BuildContext context) {
    return Container(
      height: 300,
      width: 300,
      child: ListView.builder(
        itemCount: names.length,
        shrinkWrap: true,
        itemBuilder: (BuildContext context, int index) {
          return GestureDetector(
              onTap: () {
                //do what you want here for each item
                print(names[index].keys.first.toString());
              },
              child: Text(names[index].keys.first.toString()));
        },
      ),
    );
  }

在这里你生成 ListView 的文本,用 GestureDetector 包裹, 所以你根据你的列表生成一个文本列表,当你点击其中一个文本时,你可以根据你点击的项目做任何你想做的事情。

例如,前面代码的输出如下所示:

当你点击其中一个文本时,你可以根据点击的项目做任何你想做的事情(这里我只是将项目打印到控制台)。

您需要在按钮点击事件中添加列表中的所有 TextField 值,如下所示

var nameOne = TextEditingController();
var nameTwo = TextEditingController();
var nameThree = TextEditingController();

List<Map<String,String>> names = [];


 void _submite() {

    if (nameOne.text.isEmpty) {
      print('Enter nameOne name');
    } else if (nameTwo.text.isEmpty) {
      print('Enter nameTwo name');
    } else if (nameThree.text.isEmpty) {
      print('Enter nameThree name');
    } else {
        names.add({"name1": nameOne.text});
        names.add({"name2": nameTwo.text});
        names.add({"name3": nameThree.text});
    }
  
 }

调用_submite()方法后

//输出:[{“name1”:“一个”},{“name2”:“两个”},{“name3”:“三个”},]