我想首先显示一个固定大小的模式底板. 然后,用户可以将它拖到某个点上,然后缩小到固定大小,或者让它消失,就像你在谷歌 map 应用程序或Spotify应用程序中看到的那样.

有没有专门的Flutter 翼套餐.

showModalBottomSheet<void>(
    context: _scaffoldKey.currentContext!,
    builder: (BuildContext context) {
      return MyBottomSheetComponent();
    },
    clipBehavior: Clip.hardEdge,
    enableDrag: true,
    isScrollControlled: true,
    useSafeArea: true);
}

推荐答案

是的,您可以通过一些定制逻辑来实现这一点.让我们考虑一下下面的代码:

showModalBottomSheet<void>(
  context: context,
  builder: (BuildContext context) {
    return DraggableScrollableSheet(
      initialChildSize: 0.5,
      minChildSize: 0.1, 
      maxChildSize: 0.9,
      expand: false,
      builder: (BuildContext context, ScrollController scrollController) {
        return Container(
          color: Colors.white,
          child: ListView.builder(
            controller: scrollController,
            itemCount: 25,
            itemBuilder: (BuildContext context, int index) {
              return ListTile(
                title: Text('Item $index'),
              );
            },
          ),
        );
      },
    );
  },
);

您可以使用DraggableScrollableSheet小部件创建一个可由用户上下拖动的底部工作表.有一些参数可以设置,比如,InitialChildSize、minChildSize和MaxChildSize.

这里的expand参数决定了当向上拖动时工作表是否应该扩展到最大尺寸.如果设置为true,则工作表将展开;如果设置为false,则工作表将保持最大大小,直到被解除.

Flutter相关问答推荐

Flutter:如何在盒子内创建图像带borderDecoration Radius带文本

Flutter -修改子小部件中的AppBar

如何在Firebase项目中更改包名称和包ID

在Android Studio的新用户界面中未找到热重新加载

Flutter 应用程序中的Firebase实时数据库中的orderByChild()不适用于我

Flutter 中的 setState() 内部是如何工作的?

如何在 Flutter 中以背景 colored颜色 制作圆圈的一部分

为 flutter app/firebase 保存 chatgpt api-key 的正确方法是什么

Flutter 中的区域不匹配

无状态和有状态小部件,我可以同时使用吗?

Flutter url_launcher 插件抛出java.lang.IllegalArgumentException:接收器未注册:io.flutter.plugins.urllauncher.WebViewActivity

Flutter canvas 绘制不同 colored颜色 的原始点

Flutter使Perspective Page View无限循环

访问 AsyncSnapshot 中的嵌套属性

如何建立最近的文件列表?

Getx Flutter 在更新值时抛出空错误

我的主屏幕上的 FutureBuilder 不断重新加载(但仅在其他屏幕上时)?

解密 Modulr 安全令牌

如何在 ElevatedButton 上设置背景 colored颜色 动画?

从 Uint8List 或图像对象创建 InputImageData 用于 Google ML Kit 人脸检测