【问题标题】:How to detect tap on the scrim of the modal bottom sheet?如何检测模态底板的稀松布上的敲击?
【发布时间】:2022-07-13 00:31:29
【问题描述】:

我正在使用模态表,当我点击模态底部表之外的某个位置(在透明区域中)时,它会关闭底部表,所以我需要回调这个点击手势,以便我可以在关闭之前执行某些操作底页。

showModalBottomSheet 中有属性isDismissible,它禁用了对稀松布的点击,但我不希望它禁用它,只需要一个回调以便在关闭之前可以执行某些操作。

【问题讨论】:

    标签: flutter flutter-showmodalbottomsheet


    【解决方案1】:

    不确定这是否正是您要查找的内容,但您可以在 showModalBottomSheet 构建器中返回 StatefulWidget,并在该小部件中触发带有 deactivatedispose 覆盖的回调。首先触发停用。

    要触发回调,您需要将该函数传递给StatefulWidget 的构造函数。

    例如

    void callback() {
      debugPrint('>>> my callback triggered');
    }
    
    void showMyModalBottomSheet() {
      showModalBottomSheet(
        context: context,
        builder: (context) {
          return MyBottomSheetWidget(
            callback: callback,
          );
        },
      );
    }
    
    class MyBottomSheetWidget extends StatefulWidget {
      final VoidCallback callback;
    
      const MyBottomSheetWidget({
        Key key,
        this.callback,
      }) : super(key: key);
    
      @override
      State<MyBottomSheetWidget> createState() => _MyBottomSheetWidgetState();
    }
    
    class _MyBottomSheetWidgetState extends State<MyBottomSheetWidget> {
      @override
      void deactivate() {
        debugPrint('>>> bottom sheet closing');
        widget.callback(); // This will be trigger when the bottom sheet finishes closing
        super.deactivate();
      }
    
      @override
      Widget build(BuildContext context) {
        return Container();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-17
      • 2021-11-08
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      相关资源
      最近更新 更多