每当尝试添加我在flutter中删除的相同项目时都会获取异常

时间:2019-07-12 13:42:21

标签: flutter

使用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(),
  ),
),

enter image description here

2 个答案:

答案 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,您可以为密钥建立唯一的值