【发布时间】:2019-08-30 22:48:08
【问题描述】:
我已经创建了一个表单,其中 formkey 和表单数据变量为 Map<String, String> _formdata = {};
formdata 包含个人资料数据等字段。
其中有一个字段说宠物,它有两个字段名称和年龄。
我想添加一个按钮,允许用户添加更多宠物。此表单应仅在单击按钮时可见。用户可以通过点击这个按钮添加多个宠物。
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 时,我只得到最后一个值。
【问题讨论】:
-
如果可以的话,能否添加完整的代码
-
好的,我已经添加了完整的代码
标签: flutter dart flutter-layout