gpt4 book ai didi

Flutter TextFormField 在重建时不更新值

转载 作者:行者123 更新时间:2023-12-02 10:15:10 28 4
gpt4 key购买 nike

我正在尝试使编辑字符串列表成为可能。问题是,当我通过 IconButton 删除列表项时,TextField 会重建,但不知何故仍然具有旧值。通过调试,我发现我的字符串列表已正确更新,这意味着删除的字符串实际上已在我的列表中删除。

这是我的代码:

class EditInfoItemDialog extends StatefulWidget {

@override
State<StatefulWidget> createState() => _EditInfoitemDialogState();
}

class _EditInfoitemDialogState extends State<EditInfoItemDialog> {

final _formKey = GlobalKey<FormState>();
List<String> values = ['A', 'B', 'C'];

@override
Widget build(BuildContext context) {

return Scaffold(
body: Container(
width: MediaQuery.of(context).size.width,
child: Column(
children: <Widget>[
...values.asMap().map((int index, String point) {
return MapEntry(index, Row(
children: [
Text(index.toString()),
Expanded(
child: TextFormField(
decoration: InputDecoration(hintText: 'Info'),
initialValue: values[index],
onChanged: (value) => setState(() {values[index] = value; }),
),
),
IconButton(
icon: Icon(Icons.delete),
color: Colors.red,
onPressed: () {
setState(() {
values.removeAt(index);
print(values);
});
},
)
]
));
}).values.toList(),
FlatButton(
child: Text('Add Bulletpoint'),
onPressed: () {
setState(() {
if (values == null) values = [];
values.add('');
});
},
)
],
),
),
);

}

有什么想法吗?

最佳答案

您需要向 TextFormField 添加一个键,如下所示:

key: ObjectKey(values[index])

以下是解释和示例,说明了在这种情况下需要添加 key 的原因:What are Keys in the Stateless widgets class?

Key is something used by flutter engine at the step of recognizing which widget in a list as changed

更多信息: key property

关于Flutter TextFormField 在重建时不更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58348965/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com