一个 Flutter 包,可实现底部面板的拖动打开和滚动,模仿 Google 地图应用中‘附近地点’面板的行为。它提供流畅的拖动展开交互,并支持在展开的面板内滚动内容。非常适合以紧凑、互动的形式显示详细信息或列表。该包兼容 Android、iOS、Web、macOS、Windows 和 Linux 平台。
适合场景
在地图应用中显示位置详细信息
显示附近景点列表
创建可扩展的信息面板
实现可折叠的内容部分
增强用户与可拖动底部面板的交互体验
主要特点
拖动展开手势支持
内置的可滚动内容区域
跨平台兼容性
平滑的动画过渡
可自定义的面板高度和行为
适用于所有屏幕尺寸的响应式设计
适合对象
地图和基于位置的应用程序
内容丰富的底部弹出层
需要可展开面板的用户界面
寻求原生底部表单体验的开发者
需要直观手势导航的应用程序
使用建议
可能需要额外的样式设置以实现自定义视觉效果
处理超大数据集时的性能影响
复杂动画的自定义选项有限
需要仔细处理嵌套的滚动视图
不适合用于简单的静态内容展示
原始 README
以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。
scrollable_panel
drag to expand and then can scroll contents.
similar "Nearby spots" panel on google map app.
https://pub.dev/packages/scrollable_panel
Panel Properties
Properties
Data Type
Description
builder
ScrollableWidgetBuilder
builder for inner panel view. ScrollableWidgetBuilder type define in draggable_scrollable_sheet.dart. provide PanelScrollController that extends ScrollController.
controller
PanelController
control panel from some interaction like button.
defaultPanelState
PanelState
set default panel state. (default value PanelState.open)
defaultPanelSize
double
set default panel height factor (default value 0.25)
minPanelSize
double
set minimum panel height factor. (default value 0)
maxPanelSize
double
set maximum panel height factor. (default value 1.0)
onOpen
VoidCallback
if non-null, this callback is called when panel state become open
onClose
VoidCallback
if non-null, this callback is called when panel state become close
onExpand
VoidCallback
if non-null, this callback is called when panel state become expand