我已经创建了一个带有表单键和表单数据变量的表单,例如Map<String, String> _formdata = {};
formdata包含配置文件数据等字段。
其中有一个字段称为Pets,它有两个字段名称和年龄。
我想添加一个按钮,允许用户添加更多的宠物。这个表格只有在点击按钮时才会显示。用户可以通过单击此按钮添加多个宠物。
class MyPets extends StatefulWidget {
@override
_MyPetsState createState() => _MyPetsState();
}
class _MyPetsState extends State<MyPets> {
Map<String, String> _formdata = {};
var _myPets = List<Widget>();
int _index = 1;
void _add() {
_myPets = List.from(_myPets)
..add(Column(
children: <Widget>[
ListTile(
leading: Text('Pet $_index : '),
title: TextField(
onChanged: (val) => _formdata['pet$_index'] = val,
),
),
ListTile(
leading: Text('Name of Pet $_index : '),
title: TextField(
onChanged: (val) {
_formdata['name$_index'] = val;
},
),
),
],
));
setState(() => ++_index);
}
@override
void initState() {
// TODO: implement initState
super.initState();
_add();
}
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: ()=>print(_formdata),
child: Text('Save'),
),
appBar: AppBar(
title: Text('Add your pets'),
actions: <Widget>[
FlatButton(
child: Text('Add another'),
onPressed: _add,
),
],
),
body: ListView(
children: _myPets,
),
);
}
}
问题在于当我打印_formdata时,我只得到了最后一个值。