You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter实现初始固定尺寸可拖拽模态底部Sheet的方案及包推荐

实现多停靠状态的模态底部Sheet

原生Flutter自带的showModalBottomSheet仅支持单一的拖拽收起/展开逻辑,没法直接实现你要的「初始固定尺寸→上拉至指定位置→下拉恢复初始状态/完全收起」的多状态交互(类似谷歌地图、Spotify的底部Sheet),推荐使用以下成熟的第三方包:

  • bottom_sheet:支持自定义多个停靠高度,拖拽交互逻辑完全匹配你的需求,可轻松设置初始高度、最大上拉高度,下拉时可配置回到初始状态或直接收起。
  • modal_bottom_sheet:API设计与原生showModalBottomSheet接近,迁移成本低,专门优化了多状态底部Sheet的拖拽体验,支持多停靠点设置,自动适配安全区域。

用bottom_sheet替换你现有代码的示例:

// 先在pubspec.yaml中添加依赖:bottom_sheet: ^<最新版本号>
showFlexibleBottomSheet(
  context: _scaffoldKey.currentContext!,
  minHeight: 0.2, // 初始高度为屏幕高度的20%
  initHeight: 0.2,
  maxHeight: 0.8, // 上拉可到达的最大高度为屏幕高度的80%
  builder: (context, controller, offset) {
    return MyBottomSheetComponent();
  },
  isSafeArea: true,
);

如果不想依赖第三方包,也可以基于DraggableScrollableSheet自行封装,但需要手动处理拖拽过程中的停靠判断逻辑,相对繁琐。

内容的提问来源于stack exchange,提问作者DeKekem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:57:19