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

flutter_datetime_picker_plus 封面
套件詳情v3.0.1

flutter_datetime_picker_plus

適用於 Flutter 的日期時間選擇器,您可以在英文、荷蘭語和中文中選擇日期/時間/日期和時間,並且還可以自定義自己的選擇器內容

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
5.3萬
喜歡數
171
Pub 分數
140

安裝套件

flutter pub add flutter_datetime_picker_plus

套件介紹

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

一個可自訂的日期與時間選擇器,適用於 Flutter,支援以英文、荷蘭文和中文選擇日期、時間或兩者。它提供本地化介面,並允許開發人員根據特定應用需求調整選擇器內容。相容於 Android、iOS、Web、macOS、Windows 與 Linux,可在所有平台提供無縫使用者體驗。此套件設計為易於整合,並具備 UI 自訂的彈性。

適用情境

  • 需要選擇日期/時間的表單輸入
  • 多語言應用程式
  • 可自訂的日期/時間選擇器
  • 跨平台日期/時間輸入
  • 使用者友善的日曆介面
  • 本地化應用體驗

主要特色

  • 支援日期、時間以及組合選擇
  • 支援英文、荷蘭文與中文
  • 高度可自訂的使用者介面
  • 跨平台相容性
  • 透過 pub.dev 實現輕鬆整合
  • Localization-ready

適合對象

  • 開發多語言應用程式的開發者
  • 需要靈活日期/時間輸入的應用程式
  • 需要平台一致性
  • 希望使用可自定選擇器的團隊
  • 以使用者體驗為導向的表單設計
  • 國際化行動裝置與網頁應用程式

使用建議

  • 非支援語言需要手動設定
  • 自訂可能會增加複雜性
  • 除非擴展,否則僅限預定義區域設定
  • 重度自定義帶來的效能影響
  • 可能需要額外的樣式以保持外觀一致
  • 依賴於 Flutter 版本相容性

原始 README

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

Flutter Datetime Picker Plus

Forked from (Pub) flutter_datetime_picker as it had issues with dart 3.0/Flutter 3.10.

This package only works on Flutter >=3.10.0. If you need an older version, please use the original package.

(Pub) flutter_datetime_picker_plus

Documentation

A flutter date time picker inspired by flutter-cupertino-date-picker

you can choose date / time / date&time in multiple languages:

  • Albanian(sq)
  • Arabic(ar)
  • Armenian(hy)
  • Azerbaijani(az)
  • Basque(eu)
  • Bengali(bn)
  • Bosnian(bs)
  • Bulgarian(bg)
  • Catalan(cat)
  • Chinese(zh)
  • Chinese, Traditional(tw)
  • Croatian(hr)
  • Czech(cs)
  • Danish(da)
  • Dutch(nl)
  • English(en)
  • Finnish(fi)
  • French(fr)
  • German(de)
  • Greek(gr, el)
  • Hebrew(he)
  • Hindi(hi)
  • Indonesian(id)
  • Italian(it)
  • Japanese(jp)
  • Kazakh(kk)
  • Khmer(kh)
  • Korean(ko)
  • Mongolian(mn)
  • Norwegian(no)
  • Persian(fa)
  • Polish(pl)
  • Portuguese(pt)
  • Russian(ru)
  • Serbian(sr)
  • Slovak(sk)
  • Slovenian(si, sl)
  • Spanish(es)
  • Swedish(sv)
  • Tamil(ta)
  • Thai(th)
  • Turkish(tr)
  • Ukrainian(uk)
  • Vietnamese(vi)

and you can also custom your own picker content

Date picker Time picker Date Time picker

International:

Date Time picker (Chinese) Date Time picker (America) Date Time picker (Dutch) Date Time picker (Russian)

Demo App

main page

Usage

TextButton(
    onPressed: () {
        DatePicker.showDatePicker(context,
                              showTitleActions: true,
                              minTime: DateTime(2018, 3, 5),
                              maxTime: DateTime(2019, 6, 7), onChanged: (date) {
                            print('change $date');
                          }, onConfirm: (date) {
                            print('confirm $date');
                          }, currentTime: DateTime.now(), locale: LocaleType.zh);
    },
    child: Text(
        'show date time picker (Chinese)',
        style: TextStyle(color: Colors.blue),
    ));

Customize

If you want to customize your own style of date time picker, there is a class called CommonPickerModel, every type of date time picker is extended from this class, you can refer to other picker model (eg. DatePickerModel), and write your custom one, then pass this model to showPicker method, so that your own date time picker will appear, it’s easy, and will perfectly meet your demand

How to customize your own picker model:

class CustomPicker extends CommonPickerModel {
  String digits(int value, int length) {
    return '$value'.padLeft(length, "0");
  }

  CustomPicker({DateTime currentTime, LocaleType locale}) : super(locale: locale) {
    this.currentTime = currentTime ?? DateTime.now();
    this.setLeftIndex(this.currentTime.hour);
    this.setMiddleIndex(this.currentTime.minute);
    this.setRightIndex(this.currentTime.second);
  }

  @override
  String leftStringAtIndex(int index) {
    if (index >= 0 && index < 24) {
      return this.digits(index, 2);
    } else {
      return null;
    }
  }

  @override
  String middleStringAtIndex(int index) {
    if (index >= 0 && index < 60) {
      return this.digits(index, 2);
    } else {
      return null;
    }
  }

  @override
  String rightStringAtIndex(int index) {
    if (index >= 0 && index < 60) {
      return this.digits(index, 2);
    } else {
      return null;
    }
  }

  @override
  String leftDivider() {
    return "|";
  }

  @override
  String rightDivider() {
    return "|";
  }

  @override
  List<int> layoutProportions() {
    return [1, 2, 1];
  }

  @override
  DateTime finalTime() {
    return currentTime.isUtc
        ? DateTime.utc(currentTime.year, currentTime.month, currentTime.day,
            this.currentLeftIndex(), this.currentMiddleIndex(), this.currentRightIndex())
        : DateTime(currentTime.year, currentTime.month, currentTime.day, this.currentLeftIndex(),
            this.currentMiddleIndex(), this.currentRightIndex());
  }
}
Custom title bar

By default every picker shows a Cancel/Done bar above the wheels. Pass a titleActionsBuilder to any DatePicker.show* method to replace it with your own widget. The builder receives onCancel / onConfirm callbacks (which dismiss the picker the same way the default buttons do) and the currently selected DateTime:

DatePicker.showDatePicker(
  context,
  titleActionsBuilder: (context, onCancel, onConfirm, currentTime) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: [
        TextButton(onPressed: onCancel, child: const Text('Close')),
        Text('${currentTime.year}-${currentTime.month}-${currentTime.day}'),
        TextButton(onPressed: onConfirm, child: const Text('Pick')),
      ],
    );
  },
);

The bar is laid out within the theme's titleHeight, so keep your widget within that height (or raise titleHeight via a custom DatePickerTheme). The builder is only used when showTitleActions is true (the default).

Getting Started

For help getting started with Flutter, view our online documentation.

For help on editing package code, view the documentation.

所屬分類

依賴

依賴清單 2 項

原始碼儲存庫

使用此套件的專案