使用Dismissible,我要删除通过textfiled列出的项目,但是每当我尝试添加相同的项目时,我都会删除其显示的异常。有人知道如何解决吗?
在setState方法内部,我尝试了所有可能的方法,但是遇到了相同的异常。
Expanded(
child: ListView(
children: _dEntry/*.reversed*/.map((data) {
return Dismissible(
key: Key(data),
onDismissed: (direction){
setState(() {
data.removeWhere();
});},
background: Container(color: Colors.blue),
child: ListTile(
title: Text(data),
),
);
}).toList(),
),
),
答案 0 :(得分:1)
您必须为每个Dismissible
创建唯一的密钥。这是解决方案之一:
int _dismissibleKey = 0;
...
Dismissible(
key: ObjectKey(_dismissibleKey++), ... )
答案 1 :(得分:0)
key: Key(data),
数据不是唯一的,如果您的列表数据包含id或唯一的东西,则抛出该列表。
child: ListView(
children: _dEntry/*.reversed*/.map((data) {
return Dismissible(
key: Key(data), // <--- this data var is not unique for the app.
例如@andrew的建议或类似的内容。
final GlobalKey<ScaffoldState> _listKey = GlobalKey(); // <-- add this under the class declaration
child: ListView(
children: _dEntry/*.reversed*/.map((data) {
return Dismissible(
key: Key(_listKey ), // <--- change this
通过使用GlobalKey
,您可以为密钥建立唯一的值