搜索插件、代码仓与 APP 分类

flutter_datetime_picker 封面
插件详情v1.5.1

flutter_datetime_picker

一个用于 Flutter 的日期时间选择器,您可以在英文、荷兰语和中文中选择日期/时间/日期和时间,并且还可以自定义您的选择器内容

近 30 天下载
1.3万
喜欢数
908
Pub 分数
60

安装插件

flutter pub add flutter_datetime_picker

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个 Flutter 包,提供可自定义的日期和时间选择器,支持英语、荷兰语和中文。它允许用户选择日期、时间或两者,还提供自定义选择器外观和内容的选项。适用于需要本地化日期时间输入且具有灵活 UI 设计的应用程序。该包是开源的,并在 GitHub 上维护,为开发者提供对选择器行为和展示的完全控制。

适合场景

  • 需要日期选择的表单输入
  • 基于时间的调度功能
  • 多语言应用界面
  • 可自定义的 UI 组件
  • 日期和时间范围选择器
  • 本地化用户体验

主要特点

  • 支持多种语言(英语、荷兰语、中文)
  • 可自定义的选取器内容和样式
  • 可选择日期、时间或组合的日期时间模式
  • 开源,公共仓库
  • 通过 pub.dev 实现轻松集成
  • 跨平台兼容性

适合对象

  • 开发多语言应用程序的开发者
  • 需要本地化日期/时间输入的应用程序
  • 希望拥有灵活选择器的UI设计师
  • 需要轻量级日期时间选择的项目
  • 使用 Flutter 进行移动和 Web 开发的团队

使用建议

  • 未列出平台特定的自定义选项
  • 除了基本用法外,文档有限
  • 需要手动设置以进行高级自定义
  • 未明确设计用于无障碍访问
  • 复杂布局可能需要额外的依赖项

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Flutter Datetime Picker

(Pub) flutter_datetime_picker

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)
  • Azerbaijan(az)
  • Basque(eu)
  • Bengali(bn)
  • Bulgarian(bg)
  • Catalan(cat)
  • Chinese(zh)
  • Danish(da)
  • Dutch(nl)
  • English(en)
  • French(fr)
  • German(de)
  • Hebrew(he)
  • Indonesian(id)
  • Italian(it)
  • Japanese(jp)
  • Kazakh(kk)
  • Korean(ko)
  • Persian(fa)
  • Polish (pl)
  • Portuguese(pt)
  • Russian(ru)
  • Spanish(es)
  • Swedish(sv)
  • Thai(th)
  • Turkish(tr)
  • Vietnamese(vi)
  • Khmer(kh)

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());
  }
}

Getting Started

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

For help on editing package code, view the documentation.

所属分类

源码仓库

使用此插件的项目