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

direct_select_flutter 封面
套件詳情v1.2.0

direct_select_flutter

受 https://dribbble.com/shots/3876250-DirectSelect-Dropdown-ux 啟發的直接選擇組件實現

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
440
喜歡數
321
Pub 分數
160

安裝套件

flutter pub add direct_select_flutter

套件介紹

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

一個 Flutter 套件,實現了一個受 Dribbble 設計啟發的直接選擇組件,提供直覺且視覺上吸引人的下拉體驗。它讓使用者能透過流暢的手勢操作直接與選項互動,進而提升移動裝置與網頁平台上的使用者體驗。該組件支援自訂設定,並能順暢整合至表單與資料輸入流程中。專為現代 UI/UX 標準設計,強調在所有支援平台上的清晰度與回應速度。

適用情境

  • 帶下拉選單的表單輸入
  • 移動應用中的增強使用者體驗
  • 可自定義的選擇介面
  • 帶視覺反饋的資料輸入
  • 互動式網頁和桌面表單

主要特色

  • 手勢驅動的選擇
  • 流暢的動畫
  • 跨平台相容性
  • 可自訂樣式
  • 響應式設計
  • 與現有表單的輕鬆整合

適合對象

  • 尋求現代下拉選單的開發者
  • 以使用者體驗為導向的應用程式設計師
  • 行動優先的應用程式開發
  • Web 和桌面 Flutter 應用
  • 需要直覺輸入元件的專案

使用建議

  • 可能需要額外的樣式才能適應複雜主題
  • 僅限單選模式
  • 使用極大資料集時的效能影響
  • 不適合巢狀或層級選擇
  • 需要仔細處理無障礙功能

原始 README

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

direct-select-flutter

DirectSelect is a selection widget with an ethereal, full-screen modal popup displaying the available choices when the widget is interact with. Inspired by dribble shot.

Made in lanars.com.

pub package Awesome Flutter

iOS

Android

Usage

Create DirectSelectList and fill it with items using itemBuilder

    final dsl = DirectSelectList<String>(
        values: _cities,
        defaultItemIndex: 3,
        itemBuilder: (String value) => getDropDownMenuItem(value),
        focusedItemDecoration: _getDslDecoration(),
        onItemSelectedListener: (item, index, context) {
          Scaffold.of(context).showSnackBar(SnackBar(content: Text(item)));
        });

Create items like this

  DirectSelectItem<String> getDropDownMenuItem(String value) {
    return DirectSelectItem<String>(
        itemHeight: 56,
        value: value,
        itemBuilder: (context, value) {
          return Text(value);
        });
  }

Create decorations for focused items

  _getDslDecoration() {
   return BoxDecoration(
     border: BorderDirectional(
       bottom: BorderSide(width: 1, color: Colors.black12),
       top: BorderSide(width: 1, color: Colors.black12),
     ),
   );
 }

Create DirectSelectContainer and fill it with your data

Scaffold(
      appBar: appBar,
      body: DirectSelectContainer(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            verticalDirection: VerticalDirection.down,
            children: <Widget>[
              SizedBox(height: 150.0),
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: Column(
                  children: <Widget>[
                    Container(
                      alignment: AlignmentDirectional.centerStart,
                      margin: EdgeInsets.only(left: 4),
                      child: Text("City"),
                    ),
                    Padding(
                      padding: const EdgeInsets.fromLTRB(0, 8, 0, 0),
                      child: Card(
                        child: Row(
                          mainAxisSize: MainAxisSize.max,
                          children: <Widget>[
                            Expanded(
                                child: Padding(
                                    child: DirectSelectList<String>(
                                                     values: _cities,
                                                     defaultItemIndex: 3,
                                                     itemBuilder: (String value) => getDropDownMenuItem(value),
                                                     focusedItemDecoration: _getDslDecoration(),
                                                     onItemSelectedListener: (item, index, context) {
                                                       Scaffold.of(context).showSnackBar(SnackBar(content: Text(item)));
                                                     }),
                                    padding: EdgeInsets.only(left: 12))),
                            Padding(
                              padding: EdgeInsets.only(right: 8),
                              child: Icon(
                                Icons.unfold_more,
                                color: Colors.black38,
                              ),
                            )
                          ],
                        ),
                         ),
                    ),
                  ],
                ),
              ),
            ],
          ),
        ),
      ),
    );

所屬分類

原始碼儲存庫

使用此套件的專案

暫無相關資料。