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

flutter_picker のカバー
パッケージ詳細v2.1.0

flutter_picker

Flutterプラグインのピッカー。NumberPicker、DateTimePicker、ArrayPicker、およびデフォルトの連動ピッカーを含みます。さまざまなニーズに対応するための柔軟なパラメータを提供します。

30日間ダウンロード
4470
いいね数
441
Pub ポイント
70

パッケージをインストール

flutter pub add flutter_picker

パッケージ概要

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

Flutter Picker は、NumberPicker、DateTimePicker、ArrayPicker、およびデフォルトのリンクピッカーを含む複数のピッカー コンポーネントを提供する汎用的な Flutter プラグインです。外観や動作をカスタマイズできる柔軟な設定オプションを備えており、さまざまなフォーム入力や選択ワークフローに適しています。統合が簡単で、動的なデータバインディングとさまざまなユースケースでのスムーズなユーザーインタラクションをサポートしています。

用途

  • 数値選択付きのフォーム入力
  • フォーム内の日付と時刻ピッカー
  • カスタム配列ベースのオプション選択
  • カスケード選択用のリンクドロップダウン
  • モバイル最優先のデータ入力インターフェース

主な機能

  • 複数のピッカー形式が含まれています
  • 高度カスタマイズ可能なパラメータ
  • ピッカー間のリンクをサポート
  • スムーズなスクロールとアニメーション
  • 既存のフォームとの簡単な統合

適している対象

  • データ入力フォームを開発する開発者
  • 日時選択を必要とするアプリ
  • カスケードドロップダウンが必要なプロジェクト
  • UI重視のモバイルアプリケーション
  • 再利用可能なピッカー コンポーネントを探しているチーム

注意事項

  • プラットフォーム固有の制限については記載されていません
  • 状態管理を手動で処理する必要があります
  • 基本的なセットアップ以外のドキュメントは限られている
  • 非常に大きなデータセットには最適化されていない
  • カスタムテーマ用に追加のスタイルが必要になる場合があります

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

flutter_picker

pub package GitHub GitHub stars

Flutter plugin picker. Include NumberPicker, DateTimePicker, ArrayPicker, and default linkage Picker. Provide flexible parameters to meet various needs. At the same time, you can extend more functions through custom adapters.

Supported Platforms

  • Android
  • IOS
  • Windows
  • MacOS
  • Linux
  • Web

image

How to Use

# add this line to your dependencies
flutter_picker:
  git:
    url: https://github.com/yangyxd/flutter_picker.git
import 'package:flutter_picker/flutter_picker.dart';

    showPicker(BuildContext context) {
      Picker picker = new Picker(
        adapter: PickerDataAdapter<String>(pickerdata: new JsonDecoder().convert(PickerData)),
        changeToFirst: true,
        textAlign: TextAlign.left,
        columnPadding: const EdgeInsets.all(8.0),
        onConfirm: (Picker picker, List value) {
          print(value.toString());
          print(picker.getSelectedValues());
        }
      );
      picker.show(_scaffoldKey.currentState);
    }

    showPickerModal(BuildContext context) {
      new Picker(
        adapter: PickerDataAdapter<String>(pickerdata: new JsonDecoder().convert(PickerData)),
        changeToFirst: true,
        hideHeader: false,
        onConfirm: (Picker picker, List value) {
          print(value.toString());
          print(picker.adapter.text);
        }
      ).showModal(this.context); //_scaffoldKey.currentState);
    }

    showPickerIcons(BuildContext context) {
      new Picker(
        adapter: PickerDataAdapter(data: [
          new PickerItem(text: Icon(Icons.add), value: Icons.add, children: [
            new PickerItem(text: Icon(Icons.more)),
            new PickerItem(text: Icon(Icons.aspect_ratio)),
            new PickerItem(text: Icon(Icons.android)),
            new PickerItem(text: Icon(Icons.menu)),
          ]),
          new PickerItem(text: Icon(Icons.title), value: Icons.title, children: [
            new PickerItem(text: Icon(Icons.more_vert)),
            new PickerItem(text: Icon(Icons.ac_unit)),
            new PickerItem(text: Icon(Icons.access_alarm)),
            new PickerItem(text: Icon(Icons.account_balance)),
          ]),
          new PickerItem(text: Icon(Icons.face), value: Icons.face, children: [
            new PickerItem(text: Icon(Icons.add_circle_outline)),
            new PickerItem(text: Icon(Icons.add_a_photo)),
            new PickerItem(text: Icon(Icons.access_time)),
            new PickerItem(text: Icon(Icons.adjust)),
          ]),
          new PickerItem(text: Icon(Icons.linear_scale), value: Icons.linear_scale, children: [
            new PickerItem(text: Icon(Icons.assistant_photo)),
            new PickerItem(text: Icon(Icons.account_balance)),
            new PickerItem(text: Icon(Icons.airline_seat_legroom_extra)),
            new PickerItem(text: Icon(Icons.airport_shuttle)),
            new PickerItem(text: Icon(Icons.settings_bluetooth)),
          ]),
          new PickerItem(text: Icon(Icons.close), value: Icons.close),
        ]),
        title: new Text("Select Icon"),
        onConfirm: (Picker picker, List value) {
          print(value.toString());
          print(picker.getSelectedValues());
        }
    ).show(_scaffoldKey.currentState);
  }

  showPickerDialog(BuildContext context) {
    new Picker(
        adapter: PickerDataAdapter<String>(pickerdata: new JsonDecoder().convert(PickerData)),
        hideHeader: true,
        title: new Text("Select Data"),
        onConfirm: (Picker picker, List value) {
          print(value.toString());
          print(picker.getSelectedValues());
        }
    ).showDialog(context);
  }

  showPickerArray(BuildContext context) {
    new Picker(
        adapter: PickerDataAdapter<String>(pickerdata: new JsonDecoder().convert(PickerData2), isArray: true),
        hideHeader: true,
        title: new Text("Please Select"),
        onConfirm: (Picker picker, List value) {
          print(value.toString());
          print(picker.getSelectedValues());
        }
    ).showDialog(context);
  }

  showPickerNumber(BuildContext context) {
    new Picker(
        adapter: NumberPickerAdapter(data: [
          NumberPickerColumn(begin: 0, end: 999),
          NumberPickerColumn(begin: 100, end: 200),
        ]),
        delimiter: [
          PickerDelimiter(child: Container(
            width: 30.0,
            alignment: Alignment.center,
            child: Icon(Icons.more_vert),
          ))
        ],
        hideHeader: true,
        title: new Text("Please Select"),
        onConfirm: (Picker picker, List value) {
          print(value.toString());
          print(picker.getSelectedValues());
        }
    ).showDialog(context);
  }

PickerData Example

Array

const PickerData2 = '''
[
    [
        1,
        2,
        3,
        4
    ],
    [
        11,
        22,
        33,
        44
    ],
    [
        "aaa",
        "bbb",
        "ccc"
    ]
]
    ''';
Linkage
const PickerData = '''
[
    {
        "a": [
            {
                "a1": [
                    1,
                    2,
                    3,
                    4
                ]
            },
            {
                "a2": [
                    5,
                    6,
                    7,
                    8
                ]
            },
            {
                "a3": [
                    9,
                    10,
                    11,
                    12
                ]
            }
        ]
    },
    {
        "b": [
            {
                "b1": [
                    11,
                    22,
                    33,
                    44
                ]
            },
            {
                "b2": [
                    55,
                    66,
                    77,
                    88
                ]
            },
            {
                "b3": [
                    99,
                    1010,
                    1111,
                    1212
                ]
            }
        ]
    },
    {
        "c": [
            {
                "c1": [
                    "a",
                    "b",
                    "c"
                ]
            },
            {
                "c2": [
                    "aa",
                    "bb",
                    "cc"
                ]
            },
            {
                "c3": [
                    "aaa",
                    "bbb",
                    "ccc"
                ]
            }
        ]
    }
]
    ''';

版本更新说明 (Version Update Notes)

v2.1.2 (2023.08.15)

Flutter Picker插件已经更新以支持最新版本的Flutter。主要更新内容如下:

  1. 兼容性升级:

    • 升级SDK版本支持范围到Flutter 3.x
    • 修复与新版Flutter的兼容性问题
  2. API更新:

    • 替换已弃用的ScaffoldState.showBottomSheet方法为Scaffold.maybeOf
    • 更新ButtonStyle和颜色相关的API,使用colorScheme.primary替代过时的colorScheme.secondary
    • 修复其他过时的API使用
  3. 使用说明:

    • 如果您正在使用此插件,请更新到最新版本以获得更好的兼容性
    • 对于现有代码,无需进行任何改变,API保持向后兼容

The Flutter Picker plugin has been updated to support the latest versions of Flutter. Major updates include:

  1. Compatibility Upgrade:

    • Expanded SDK version support to Flutter 3.x
    • Fixed compatibility issues with newer Flutter versions
  2. API Updates:

    • Replaced deprecated ScaffoldState.showBottomSheet method with Scaffold.maybeOf
    • Updated ButtonStyle and color-related APIs, using colorScheme.primary instead of the deprecated colorScheme.secondary
    • Fixed other deprecated API usages
  3. Usage Notes:

    • If you are using this plugin, please update to the latest version for better compatibility
    • No changes needed for existing code, the API remains backward compatible

カテゴリー

ソースリポジトリ

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