我在Flutter中使用了可禁用的小部件。
我知道ondismiss()可以为我们提供有关用户向左或向右滑动的位置的一条信息,但是只有在从屏幕上消除了某个元素后才能提供该信息。我可以检测用户是否要向左或向右滑动吗?
也许,我可以检查背景是否可见,我正在谈论背景和第二个背景
答案 0 :(得分:0)
在关闭前,可以使用confirmDismiss执行任何逻辑,如果返回true,则必须返回true或false值,否则元素将被删除并在onDismissed中执行操作。
Dismissible(
key: ValueKey(id),
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 the item 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) {
Provider.of<Cart>(context, listen: false).removeItem(productId);
},
child: Card(
margin: EdgeInsets.symmetric(
horizontal: 15,
vertical: 4,
),
child: Padding(
padding: EdgeInsets.all(8),
child: ListTile(
leading: CircleAvatar(
child: Padding(
padding: EdgeInsets.all(5),
child: FittedBox(
child: Text('\$$price'),
),
),
),
title: Text(title),
subtitle: Text('Total: \$${(price * quantity)}'),
trailing: Text('$quantity x'),
),
),
),
);