📜  颤振解雇 ondismissed 是 否 (1)

📅  最后修改于: 2023-12-03 15:28:57.715000             🧑  作者: Mango

开发者介绍: 颤振解雇 ondismissed 是否

简介

onDismissed 是 Flutter 中用于监听 ListView 中元素滑出屏幕并消失的回调函数。该回调函数的参数 DismissDirection 是一个枚举类型,表示元素消失时的滑动方向。

Dismissible 是可以滑动并带有“解雇”(即删除)功能的 widget。在列表中使用 Dismissible 可以方便地实现类似于邮件列表中向左或向右滑动一个邮件后出现的操作。

onDismissed 的用法是使用 Dismissible 包裹列表元素并传入 keydirectiononDismissed 等参数。当用户向右或向左滑动元素并松手后,父 Widget 的 onDismissed 回调函数将被触发,对元素的“解雇”逻辑进行处理。

代码示例

下面的代码示例演示了 DismissibleonDismissed 的使用方法:

ListView.separated(
  itemCount: _items.length,
  separatorBuilder: (BuildContext context, int index) => Divider(),
  itemBuilder: (BuildContext context, int index) {
    final item = _items[index];
    return Dismissible(
      key: Key(item),
      direction: DismissDirection.endToStart,
      confirmDismiss: (DismissDirection direction) async {
        return await showDialog(
          context: context,
          builder: (BuildContext context) {
            return AlertDialog(
              title: const Text("确认删除"),
              content: const Text("您确定要删除此项吗?"),
              actions: <Widget>[
                FlatButton(
                  onPressed: () => Navigator.of(context).pop(false),
                  child: const Text("取消"),
                ),
                FlatButton(
                  onPressed: () => Navigator.of(context).pop(true),
                  child: const Text("删除"),
                )
              ],
            );
          }
        );
      },
      onDismissed: (direction) {
        setState(() {
          _items.removeAt(index);
        });
        Scaffold.of(context).showSnackBar(
          SnackBar(
            content: Text("$item 已删除"),
            action: SnackBarAction(
              label: "撤销",
              onPressed: () {
                setState(() {
                  _items.insert(index, item);
                });
              },
            ),
          )
        );
      },
      child: ListTile(
        title: Text(item),
      ),
    );
  },
)

以上代码演示了如何在 ListView 中使用 DismissibleonDismissed

结论

在这个例子中,我们使用 Dismissible 包裹了 ListTile 并传入了必要的参数。然后,在 onDismissed 回调函数中我们删除了该元素并展示了一个 SnackBar。通过这种简单的方法,我们就实现了“解雇”的功能。

flutter 为开发者提供了强大且易用的工具来实现这种功能,DismissibleonDismissed 是其中一个很好的例子。