如何防止底部纸张消除颤动

问题描述 投票:0回答:5

我想防止在颤动中向下滑动时忽略

bottom sheet
, 我想用

Scaffold.of(context).showBottomSheet<void>((BuildContext context) => ...)

而不是

showModalBottomSheet
,因为我需要脚手架信息,
showBottomSheet
有什么解决方案吗?我该怎么办?

flutter bottom-sheet
5个回答
10
投票

如果您使用

showModalBottomSheet
,请使用
enableDrag
属性。

showModalBottomSheet<bool>(
        context: context,
        enableDrag: false,
        ...
        builder: (BuildContext bc) {
           return ..your widgets...
        }
);

4
投票
showModalBottomSheet(
    isDismissible: false,
)

3
投票

GestureDetector
包裹您的小部件并禁用拖动:

Scaffold.of(context).showBottomSheet(
  (context) => GestureDetector(
    child: YourWidget(),
    onVerticalDragStart: (_) {},
  ),
)

2
投票

尽管@Sami 答案工作正常,但它不太优雅,因为它似乎是一种解决方法。

对于这种情况,您应该使用

AbsorbPointer
而不是仅使用空手势。

简单地说(粘贴文档):

在命中测试期间吸收指针的小部件。

在你的情况下,你会这样使用:

Scaffold.of(context).showBottomSheet(
  (context) => AbsorbPointer(child: Container()),
)

0
投票

如果有人想阻止 Android 设备上的硬件后退按钮关闭底部工作表

你必须制作自己的底部工作表,而不是使用 showBottomSheet(),就像这样

Navigator.of(context).push(
  PageRouteBuilder(
    opaque: false,
    pageBuilder: (_, __, ___) {
      return Material(
        color: Colors.black.withOpacity(0.5),
        child: WillPopScope(
          onWillPop: () async {
            return false;
          },
          child: YourCustomBottomSheet(),
        ),
      );
    },
  ),
);
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.