我如何在颤振中动态设置变量的数据?
Posted
技术标签:
【中文标题】我如何在颤振中动态设置变量的数据?【英文标题】:How i set data dynamically on variable in flutter? 【发布时间】:2020-05-06 20:32:20 【问题描述】:我需要一些帮助。如何在颤动的变量上动态设置数据?我在 listview.builder 中有一个表单。动态生成的 TextFormField 数量。因此很难为每个 TextFormField 制作不同的变量。
当 TextFormField 中的用户名文本时,我想在 var
上设置该数据,以便我可以将该数据存储在 firebase 中。这是我的代码的简单版本:
Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: ListView.builder(
itemCount: widget.stops,
itemBuilder: (context, index)
var stops = 1;
return Row(
children: <Widget>[
Flexible(
child: Container(
child: TextFormField(
decoration: InputDecoration(
labelText: 'Stop ' +
(stops + index).toString(),
),
validator: (val) => val.isEmpty
? 'Cannot be empty'
: null,
onChanged: (val)
setState(()
//here i want setdata dynamically
);
,
),
),
),
Flexible(
child: Container(
child: TextFormField(
cursorColor: Color(0xFF127772),
decoration: InputDecoration(
labelText: 'Ticket Price',
),
),
),
validator: (val) => val.isEmpty
? 'Cannot be empty'
: null,
onChanged: (val)
setState(()
//here i want setdata dynamically
);
,
),
),
)
],
);
),
),
Container(
child: RaisedButton(
),
onPressed: () async
if (_formKey.currentState.validate())
,
child: Text('CREATE'),
),
),
],
),
),
【问题讨论】:
【参考方案1】:您可以创建两个字符串列表,因为您在项目中有两个 textField,并在 onsave 方法上将 val 分配给此列表。
以下代码可以帮助您更好地理解。
class DeleteWidget extends StatefulWidget
final stops = 2;
@override
_DeleteWidgetState createState() => _DeleteWidgetState();
class _DeleteWidgetState extends State<DeleteWidget>
List<String> _list1;
List<String> _list2;
GlobalKey<FormState> _formKey = GlobalKey<FormState>();
@override
void initState()
super.initState();
_list2 = List(widget.stops);
_list1 = List(widget.stops);
@override
Widget build(BuildContext context)
return Scaffold(
body: Form(
key: _formKey,
child: Column(
children: [
Expanded(
child: ListView.builder(
itemCount: widget.stops,
itemBuilder: (_, index)
return Row(
children: [
Flexible(
child: TextFormField(
validator: (val) =>
val.isEmpty ? 'Cannot be empty' : null,
onChanged: (val)
setState(
()
_list1[index] = val;
,
);
,
),
),
SizedBox(
width: 20,
),
Flexible(
child: TextFormField(
validator: (val) =>
val.isEmpty ? 'Cannot be empty' : null,
onChanged: (val)
setState(
()
_list2[index] = val;
,
);
,
),
)
],
);
,
),
),
Container(
child: RaisedButton(
onPressed: () async
if (_formKey.currentState.validate())
_formKey.currentState.save();
for (int i = 0; i < widget.stops; i++)
print("item $i form field 1 $_list1[i]");
print("item $i form field 2 $_list2[i]");
,
child: Text('CREATE'),
),
),
],
),
),
);
【讨论】:
以上是关于我如何在颤振中动态设置变量的数据?的主要内容,如果未能解决你的问题,请参考以下文章