14

我想构建一个能够拖动到全屏的底部工作表小部件。

谁能告诉我该怎么做?

谷歌地图有一个小部件可以做到这一点。这是屏幕截图(查看附件图片):

上拉前:

带有向上拖动按钮的底部工作表 上拉后:

向上拖动后的底部工作表

4

2 回答 2

22

DraggableBottomSheet小部件与小部件一起使用Stack

谷歌地图可拖动表格

这是此^ GIF 中整个页面的要点,或尝试使用Codepen

这是整个页面的结构:

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: <Widget>[
          CustomGoogleMap(),
          CustomHeader(),
          DraggableScrollableSheet(
            initialChildSize: 0.30,
            minChildSize: 0.15,
            builder: (BuildContext context, ScrollController scrollController) {
              return SingleChildScrollView(
                controller: scrollController,
                child: CustomScrollViewContent(),
              );
            },
          ),
        ],
      ),
    );
  }


Stack
- 谷歌地图是最低层。
- 标题(搜索字段+水平滚动芯片)位于地图上方。
- DraggableBottomSheet 位于标题上方。

中定义的一些有用参数draggable_scrollable_sheet.dart

  /// The initial fractional value of the parent container's height to use when
  /// displaying the widget.
  ///
  /// The default value is `0.5`.
  final double initialChildSize;

  /// The minimum fractional value of the parent container's height to use when
  /// displaying the widget.
  ///
  /// The default value is `0.25`.
  final double minChildSize;

  /// The maximum fractional value of the parent container's height to use when
  /// displaying the widget.
  ///
  /// The default value is `1.0`.
  final double maxChildSize;
于 2020-05-29T01:37:53.947 回答
3

模式和持久的底页都不能拖到视图中。持久的底页必须被触发打开(例如,通过按下按钮)&然后它可以被向上和向下拖动直到最终消失。我希望有一个选项可以将其拖到视图中...

橡胶应该满足您的需求;我试了一下,但是当我调用 setstate 时它总是吓坏了(所以对我来说不行)......如果你有同样的问题,请告诉我。

于 2019-06-08T04:39:07.827 回答