【发布时间】:2019-12-16 07:08:28
【问题描述】:
我正在从列表视图中删除一个项目。它已成功删除,但未在 UI 上更新。当我返回上一个屏幕并再次回到我删除项目的屏幕时,它会更新。我正在使用 Dismissible 来删除项目。
下面是我设置列表视图的代码
Expanded(
child: ListView.builder(
itemCount: data.length,
itemBuilder: (ctx, i) => DataItem(
data: data[i],
shopList: widget.shopList,
),
),
)
这是我在 DataItem 中的代码:
return Dismissible(
key: UniqueKey(),
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,
),
),
direction: DismissDirection.endToStart,
confirmDismiss: (direction) {
return showDialog(
context: context,
builder: (ctx) => AlertDialog(
title: Text('Are you sure?'),
content: Text('Do you want to remove from the cart?'),
actions: <Widget>[
FlatButton(
child: Text('No'),
onPressed: () {
Navigator.of(ctx).pop(false);
},
),
FlatButton(
child: Text('Yes'),
onPressed: () {
Navigator.of(ctx).pop(true);
},
)
],
),
);
},
onDismissed: (direction) {
setState(() {
deleteCartItem(widget.data.id);
String gen = widget.data.toString();
});
},
child: Card(
margin: EdgeInsets.symmetric(
horizontal: 15,
vertical: 4,
),
child: Padding(
padding: EdgeInsets.all(8),
child: ListTile(
leading: CircleAvatar(
backgroundColor: AppColors.purple,
child: Padding(
padding: EdgeInsets.all(5),
child: FittedBox(
child: Text(
widget.generation.price,
style: TextStyle(color: Colors.white),
),
),
),
),
title: Text(widget.generation.title),
subtitle: Text(
'Total: \$${(widget.data.price * 1)}',
),
),
),
),
);
【问题讨论】:
-
你能发布完整的课程代码吗?你发布的代码看起来不错。
-
deleteCartItem(widget.data.id);是什么? -
@AdityaNigam 是删除项目的方法
-
@USER9561 该功能似乎无法正常工作。可能是延迟手术?也上传代码
-
@AdityaNigam 功能正常