android - 已关闭的 Dismissible 小部件仍然是树的一部分。从列表中删除项目后重复出现此错误
问题描述
我已将 UniquiId 设置为 Dismissible Widget 的键。之后添加一些项目,我有些解雇了一个项目。当我转到下一页时,我收到一个错误(已关闭的 Dismissible 小部件仍然是树的一部分。)即使在已关闭的回调中使用 Provider 从列表中删除了该项目。
@override
Widget build(BuildContext context) {
return Dismissible(
key: UniqueKey(),
direction: DismissDirection.endToStart,
confirmDismiss: (direction) {
return showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text('Are you sure?'),
content: Text(
'Dou you want to remove the item from the cart?',
),
actions: [
FlatButton(
onPressed: () {
Navigator.of(context).pop(false);
},
child: Text('No'),
),
FlatButton(
onPressed: () {
Navigator.of(context).pop(true);
},
child: Text('Yes'),
),
],
),
);
},
onDismissed: (direction) {
Provider.of<Cart>(context, listen: false)
.removeItem(productId);
},
background: Container(
color: Theme.of(context).errorColor,
child: Icon(
Icons.delete,
color: Colors.white,
size: 40,
),
alignment: Alignment.centerRight,
padding: EdgeInsets.only(right: 20),
margin: EdgeInsets.symmetric(
horizontal: 15,
vertical: 4,
),
),
child: Container(
child: Padding(
padding: EdgeInsets.all(8),
child: ListTile(
leading: CircleAvatar(
child: Padding(
padding: EdgeInsets.all(5),
child: FittedBox(
child: Text('\₹${(price * quantity)}'),
),
),
),
title: Text(title),
subtitle: Text(laundryName.toUpperCase()),
trailing: Text('$quantity x'),
),
),
),
);
}
}
请帮助我在这个尝试了很多仍然得到同样的错误。提前致谢。
解决方案
确保项目已从根列表中删除。如果您正在使用提供程序,则通过将 listView.builder 小部件保留在 Consumer 下来获取更新的数据。这样当您关闭一个项目时,它将被更新。
推荐阅读
- powerbi-embedded - 禁用 Power BI Embedded 报表的编辑模式
- django - 在 Google App Engine 标准环境中使用 PostgreSQL 和 Django
- replication - MySQL 5.7.23 和 5.7.24 上的冻结复制
- sql - 将列拆分为三列的新行
- python - 将数据帧与 MultiIndex 相加
- r - 清理 R 中的数据:需要 TRUE/FALSE 的错误缺失值
- c# - 将此代码转换为使用带有批处理模式的 Microsoft Graph
- pdf - 是否可以减少 GhostScript 内存?
- xamarin - NSHttpCookie 在 iOS 版本 10 的情况下获取 cookie
- c# - 从 C# Azure Function Apps 调用 PowerShell