搜尋套件、儲存庫與 APP 分類

scrollable_panel 封面
套件詳情v0.4.1

scrollable_panel

拖曳以展開,然後可滾動內容。類似於 Google 地圖應用程式中的「附近地點」面板。

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
84
喜歡數
62
Pub 分數
150

安裝套件

flutter pub add scrollable_panel

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

一個 Flutter 套件,可讓底部面板被拖曳開啟並滾動,模擬 Google 地圖應用中的「附近地點」面板行為。它提供流暢的拖曳展開互動,並支援在展開的面板內滾動內容。非常適合以緊湊且互動的方式顯示詳細資訊或清單。此套件相容於 Android、iOS、Web、macOS、Windows 與 Linux 平台。

適用情境

  • 在地圖應用中顯示位置詳細資訊
  • 顯示附近景點列表
  • 建立可擴展的資訊面板
  • 實現可摺疊的內容部分
  • 增強使用者與可拖曳底部面板的互動體驗

主要特色

  • 拖曳展開手勢支援
  • 內建的可捲動內容區域
  • 跨平台相容性
  • 平滑的動畫過渡
  • 可自訂的面板高度與行為
  • 適用於所有螢幕尺寸的響應式設計

適合對象

  • 地圖和基於位置的應用程式
  • 內容豐富的底部彈出層
  • 需要可展開面板的使用者介面
  • 尋求原生類似底層表單體驗的開發者
  • 需要直覺式手勢導航的應用程式

使用建議

  • 可能需要額外的樣式設定以實現自訂視覺效果
  • 處理極大資料集時的效能影響
  • 複雜動畫的自訂選項有限
  • 需要仔細處理嵌套的滾動視圖
  • 不適合用於簡單的靜態內容顯示

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

scrollable_panel

pub package

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

PanelController actions

Action Data Type Description
open void open panel. panel animate to defaultPanelSize.
expand void expand panel. panel animate to maxPanelSize.
close void close panel. panel animate to minPanelSize.
animateTo double animate panel to value height.

Usage

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  PanelController _panelController = PanelController();
  
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('scrollable panel'),
      ),
      body: Stack(
        children: <Widget>[
          InkWell(
            onTap: () {
              _panelController.toDefault();
            },
            child: _FirstView(),
          ),
          ScrollablePanel(
            controller: _panelController,
            builder: (context, controller) {
              return SingleChildScrollView(
                controller: controller,
                child: _SecondView(),
              );
            },
          ),
        ],
      ),
    );
  }
}

TODO

  • ~write README.md and dartdoc~
  • ~null-safety support~
  • ~write test code~
  • add List<double> anchor property to use multi snapping point.

所屬分類

原始碼儲存庫

使用此套件的專案

暫無相關資料。