Flutter Dismissible 未从树中移除
Posted
技术标签:
【中文标题】Flutter Dismissible 未从树中移除【英文标题】:Flutter Dismissible not removing from tree 【发布时间】:2018-07-07 12:24:09 【问题描述】:我正在使用 Flutter 并正在努力从树中删除一个 Dismissible 对象。下面是我的代码。我创建了一个存储在列表“newlist”中的自定义类。我似乎从 List 和 setState() 中删除了 Dismissible 对象,但它似乎不起作用。非常感谢任何帮助。
return new Dismissible(key: new Key("newlist"),
direction: DismissDirection.horizontal,
onDismissed: (DismissDirection direction)
setState(()
newlist.remove(newlist[index]);
print(newlist.length);
);
,
child: new ListTile(
leading: const
Icon(Icons.album),
title: new Text(newlist[index].amount),
subtitle: new Text(
newlist[index].name)));
)),
【问题讨论】:
【参考方案1】:我已经使用项目名称 + 列表长度作为键解决了它。因为可能有一些物品具有相同的价值
return Dismissible(
key: Key(item.name + _paths.length.toString()),
onDismissed: (direction)
setState(()
_paths.removeAt(index);
);
// Show a red background as the item is swiped away
background: Container(color: Colors.red),
child: Container(child: new Texts().tallText(item.name)),
);
【讨论】:
也为我工作。每个项目的密钥必须是唯一的。 你可以使用 UniqueKey() 。 api.flutter.dev/flutter/widgets/UniqueKey-class.html【参考方案2】:是的,因为只有密钥。
key: new Key("newlist")
- 错误
应该是:
key: Key(newlist[index])
【讨论】:
【参考方案3】:我解决了。本质上,我对每个 Dismissable 都使用相同的 Key。这让 Flutter 认为我解散的对象还在。希望这对某人有所帮助。
【讨论】:
以上是关于Flutter Dismissible 未从树中移除的主要内容,如果未能解决你的问题,请参考以下文章
使用 Flutter/Dart 关闭 Dismissible
Flutter:Dismissible 小部件内的 SnackBar 无法正常工作