我正在嘗試創建一個值串列,例如
{
"name1" : "one"
},
我從文本欄位中得到上面提到的“一個”。假設我在三個單獨的文本欄位中輸入了三個這樣的值。現在,當我按下提交按鈕時,我必須創建一個名為“名稱”的串列,如下所示
names: [
{
"name1" : "one"
},
{
"name2" : "two"
},
{
"name3" : "three"
},
]
這里“一”、“二”、“三”是文本欄位值,當有按鈕單擊事件時,我需要生成其余的值
(我必須為稍后必須做的http帖子創建其中的許多內容,所以請隨時讓我知道如果存在更好的方法,或者如果我正在使用的程式錯誤,請糾正我)
uj5u.com熱心網友回復:
您需要在按鈕點擊事件中添加串列中的所有 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" : "one"},{"name2" : "two"},{"name3" : "three"},]
uj5u.com熱心網友回復:
你可以這樣做:
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,因此您可以根據您的串列生成一個文本串列,當您單擊其中一個文本時,您可以根據您單擊的專案做任何您想做的事情。
例如,前面代碼的輸出如下所示:

當您單擊其中一個文本時,您可以根據單擊的專案做任何您想做的事情(這里我只是將專案列印到控制臺)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/445162.html
