我遇到了与 TextFormField 相关的奇怪行为,因此我在父小部件中维护了一个对象列表,我使用以下代码呈现子小部件列表
children: <Widget>[
...childProfiles
.map((e) => ChildProfileCard(
childProfile: e,
removeChildProfile: removeChildProfile))
.toList(),
而ChildProfileCard包含一个TextFormField,代码如下
TextFormField(
decoration: const InputDecoration(
contentPadding: EdgeInsets.only(top: 0),
hintText: "Enter child's name",
),
validator: (value) {
if (value == null || value.isEmpty) {
return 'Name is required';
}
return null;
},
),
有一个“删除”功能,可以简单地从列表中删除其中一项,如下所示
setState(() {
childProfiles = childProfiles
.where((childProfile) => childProfile.id != childProfileToRemove.id)
.toList();
});
当有两个以上的项目(两个子小部件)时,我在第一个子小部件的TextFormField中输入了一些文本,然后我删除了第一个项目,文本将始终自动应用于第二个子小部件,我做错了什么? 我可以确认列表已正确更新,但文本表现异常。