dart 当第二个Slidable打开时,如何关闭第一个Slidable?

9wbgstp7  于 2023-05-20  发布在  其他
关注(0)|答案(1)|浏览(160)

我使用Slidable,当我打开第二个Slidable时,我需要关闭第一个Slidable。所以我只能打开一个Slidable。如何实施?

编码

@override
  Widget build(BuildContext context) {
    return Slidable(
      key: uniqueKey,
      dragStartBehavior: DragStartBehavior.start,
      endActionPane: ActionPane(
        motion: const BehindMotion(),
        extentRatio: 0.32,
        children: [
          Flexible(
            child: Row(
              children: [
                CustomSlidableAction(
                  onPressed: (value) async {},
                  backgroundColor: constants.Colors.blue,
                  child: SizedBox(
                    height: 20,
                    child: icon,
                  ),
                ),
                CustomSlidableAction(
                  onPressed: (value) async {},
                  backgroundColor: constants.Colors.red3,
                  child: SizedBox(
                    height: 20,
                    child: constants.Assets.trash.toSVG(),
                  ),
                ),
              ],
            ),
          )
        ],
      ),
      child: child,
    );
  }
sqxo8psd

sqxo8psd1#

您可以使用SlidableAutoCloseBehavior Package 可滑动列表
Link to the output
下面是示例代码

SlidableAutoCloseBehavior(
        child: ListView.builder(
          itemCount: 100,
          itemBuilder: (context, index) {
            return Slidable(
              endActionPane: ActionPane(
                motion: const ScrollMotion(),
                children: [
                  SlidableAction(
                    flex: 2,
                    onPressed: (context) { },
                    icon: Icons.delete,
                    label: 'Delete',
                  ),
                ],
              ),
              child: ListTile(
                title: Text('${index + 1}'),
              )
            );
          },
        ),
      )

相关问题