flutter_datetime_picker 1.5.1 modified

刘彦博 e4da0ec77f Merge pull request #87 from shinriyo/feature/header_color_option %!s(int64=6) %!d(string=hai) anos
example b579140769 fix bugs %!s(int64=6) %!d(string=hai) anos
lib 5b65015b5a Merge branch 'master' into feature/header_color_option %!s(int64=6) %!d(string=hai) anos
res 40d5384888 add async calling %!s(int64=6) %!d(string=hai) anos
test 4509c80e57 fix bug %!s(int64=7) %!d(string=hai) anos
.gitattributes 01b97d2f29 Initial commit %!s(int64=7) %!d(string=hai) anos
.gitignore f20c6ea596 gitignore %!s(int64=7) %!d(string=hai) anos
CHANGELOG.md b579140769 fix bugs %!s(int64=6) %!d(string=hai) anos
LICENSE 01b97d2f29 Initial commit %!s(int64=7) %!d(string=hai) anos
README.md b579140769 fix bugs %!s(int64=6) %!d(string=hai) anos
main_page.png 4c099b37c6 add customize example %!s(int64=6) %!d(string=hai) anos
pubspec.yaml b579140769 fix bugs %!s(int64=6) %!d(string=hai) anos
screen_date.png b9a83de866 fix %!s(int64=7) %!d(string=hai) anos
screen_datetime_chinese.png b9a83de866 fix %!s(int64=7) %!d(string=hai) anos
screen_datetime_dutch.png 290ed5aca3 add Russian %!s(int64=6) %!d(string=hai) anos
screen_datetime_english.png b9a83de866 fix %!s(int64=7) %!d(string=hai) anos
screen_datetime_russian.png 290ed5aca3 add Russian %!s(int64=6) %!d(string=hai) anos
screen_time.png b9a83de866 fix %!s(int64=7) %!d(string=hai) anos

README.md

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:

  • Arabic(ar)
  • Armenian(hy)
  • Azerbaijan(az)
  • Basque(eu)
  • Bengali(bn)
  • Bulgarian(bg)
  • Chinese(zh)
  • Danish(da)
  • Dutch(nl)
  • English(en)
  • French(fr)
  • German(de)
  • Indonesian(id)
  • Italian(it)
  • Japanese(jp)
  • Korean(ko)
  • Persian(fa)
  • Polish (pl)
  • Portuguese(pt)
  • Russian(ru)
  • Spanish(es)
  • Turkish(tr)
  • 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

FlatButton(
    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.