パッケージ、リポジトリ、アプリカテゴリを検索

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

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

Dribbbleデザインからインスパイアされた、直接選択ウィジェットを実装するFlutterパッケージです。直感的で視覚的に魅力的なドロップダウン体験を提供します。ユーザーは滑らかでジェスチャー駆動のインターフェースを通じてオプションと直接対話でき、モバイルおよびWebプラットフォームでのUXを向上させます。カスタマイズが可能で、フォームやデータ入力フローにシームレスに統合できます。現代的なUI/UX基準に基づき、すべての対応プラットフォームで明確さと反応性を重視しています。

用途

  • ドロップダウン付きのフォーム入力
  • モバイルアプリにおけるユーザーエクスペリエンスの向上
  • カスタマイズ可能な選択インターフェース
  • 視覚フィードバック付きのデータ入力
  • インタラクティブなウェブおよびデスクトップフォーム

主な機能

  • ジェスチャー駆動型選択
  • スムーズなアニメーション
  • クロスプラットフォーム互換性
  • カスタマイズ可能なスタイル
  • レスポンシブデザイン
  • 既存のフォームとの簡単な統合

適している対象

  • 現代のドロップダウンを探している開発者
  • 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,
                              ),
                            )
                          ],
                        ),
                         ),
                    ),
                  ],
                ),
              ),
            ],
          ),
        ),
      ),
    );

カテゴリー

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。