board_datetime_picker 2.0.0 copy "board_datetime_picker: ^2.0.0" to clipboard
board_datetime_picker: ^2.0.0 copied to clipboard

Picker to select date and time for Flutter. It is both a calendar and a picker, offering a variety of options as a package.

board_datetime_picker #

Picker to select date and time for Flutter.
It is both a calendar and a picker, offering a variety of options as a package.

On tablets, the calendar and picker can be displayed simultaneously for easy date/time selection. In other cases, the calendar and picker can be switched at the touch of a button for easy date/time selection.

Multiple selections are supported, and you can also select the start and end date and time in a single Picker display.

Features #

Picker Selection #

There are two types of Picker: a modal display and a builder display embedded in a widget.
Multi-selection supports only modal display.

Single Multi Builder
Single Multi

Input Field #

Standard Wide

Getting Started #

In order to add board_datetime_picker package to your project add this line to your pubspec.yaml file

dependencies:
    board_datetime_picker: 2.0.0

Usage #

Import it to your project file.

import 'package:board_datetime_picker/board_datetime_picker.dart';

Show normal single-picker.

final result = await showBoardDateTimePicker(
  context: context,
  pickerType: DateTimePickerType.datetime,
)

Show picker making multiple selections.

final result = await showBoardDateTimeMultiPicker(
  context: context,
  pickerType: DateTimePickerType.datetime,
)

Builder #

final controller = BoardDateTimeController();

DateTime date = DateTime.now();

@override
Widget build(BuildContext context) {
  return BoardDateTimeBuilder(
    controller: controller,
    pickerType: DateTimePickerType.datetime
    builder: (context) {
      return Scaffold(
        appBar: AppBar(
          title: Text('Example'),
        ),
        body: Center(
          child: Text(BoardDateFormat('yyyy/MM/dd').format(date))
        ),
      );
    },
    onChange: (val) {
      setState(() => date = val);
    }
  );
}

Input Field #

final textController = BoardDateTimeTextController();

@override
Widget build(BuildContext context) {
  return SizedBox(
    width: 160,
    child: BoardDateTimeInputField(
      controller: textController,
      pickerType: DateTimePickerType.datetime,
      options: const BoardDateTimeOptions(
        languages: BoardPickerLanguages.en(),
      ),
      textStyle: Theme.of(context).textTheme.bodyMedium,
      onChanged: (date) {
        print('onchanged: $date');
      },
      onFocusChange: (val, date, text) {
        print('on focus changed date: $val, $date, $text');
      },
    ),
  );
}

Picker Type #

DateTimePickerType types include [date], [datetime], [time]. The picker to be displayed depends on the type selected. Only [datetime] and [date] types can be displayed for calendars.

Parameters #

In using BoardDateTimeBuilder or showBoardDateTimePicker, there are several parameters.
Those without [required] are optional.

Parameter Type Description
builder Widget Function(BuildContext context) [required] builder function to form a widget for a screen that uses a picker.
controller BoardDateTimeController [required] Controller to open or close the picker.
onChange void Function(DateTime) [required] Callback when date is changed in the picker.
pickerType DateTimePickerType Display picker type. datetime, date. time. default is datetime.
breakpoint double Breakpoints for switching between Wide and Standard modes. default is 800.
initialDate DateTime Date and time of initial display. default is DateTime.now(). Builder only parameter.
minimumDate DateTime Minimum date in the selectable range. default is DateTime(1970, 1, 1, 0, 0).
maximumDate DateTime Maximum date in the selectable range. default is DateTime(2050, 12, 31, 23, 59).
resizeBottom bool Flag whether to resize the bottom of the specified Builder. If true, the picker is displayed under the builder in Column. default is true.
options BoardDateTimeOptions Class for defining options related to the UI used by [BoardDateTimeBuilder].

When using showBoardDateTimeMultiPicker, specify startDate and endDate instead of initialDate.
Please guarantee that the correct values are entered, as it will not work correctly if the start and end are reversed at the time of the function call.

BoardDateTimeOptions #

Introduce the definition of the property class that controls UI among the BoardDateTimeBuilder's parameters.
All properties are optional.
The same parameter is used in showBoardDateTimePicker.

Parameter Type Description
backgroundColor Color Picker Background Color. default is Theme.of(context).scaffoldBackgroundColor
foregroundColor Color Picket Foreground Color. default is Theme.of(context).cardColor
textColor Color Picker Text Color. default is Theme.of(context).textTheme.bodyLarge?.color
activeColor Color Use the color of the currently selected date or button in the calendar as a color to indicate the selection status. default is Theme.of(context).primaryColor
activeTextColor Color activeColor is used as the background color and activeTextColor as the text color. default color is white.
backgroundDecoration BoxDecoration BoxDecoration of the widget displayed on the backmost side of the picker. If not specified, it will be a standard BoxDecoration with the color specified in the normal backgroundColor (default).
languages BoardPickerLanguages Language information for text displayed in the picker. Default is en
customOptions BoardPickerCustomOptions Option to specify items to be displayed in the picker by date and time. Only time can be specified. Default is null
startDayOfWeek int First day of the week in the calendar. Defailt is DateTime.sunday
pickerFormat String Date format for pickers. Specify if you want to change the display order of year, month, date. Default is ymd
showDateButton bool Flag whether the today or tomorrow button is displayed in the header of the picker. Default is true
boardTitle String Title to be displayed in the header of the Picker
boardTitleTextStyle TextStyle Style of title to be displayed in the header of the Picker
pickerSubTitles BoardDateTimeItemTitles Specify the title of each item to be displayed in the picker
weekend BoardPickerWeekendOptions Specify the color of Saturday and Sunday to be displayed in the calendar
inputable bool Flag whether the date to be selected should be text-enabled or not. Default is true

Sample of gradient background:

options: BoardDateTimeOptions(
    backgroundDecoration: const BoxDecoration(
        gradient: LinearGradient(
            colors: <Color>[
                Color(0xff1A2980),
                Color(0xff26D0CE),
            ],
        ),
    ),
),

Picker Format

The order in which picker dates are displayed can be specified.
The default is ymd, which displays dates in the picker in the order year - month - day.
The type specified is `BoardDateTimePickerFormat.

PickerFotmat format
ymd year - month - day
Mdy month - day - year
dMy day - month - year

Language Option

By default, English, Japanese, and Italian definitions are prepared.
If you want to use other languages, define the BoardPickerLanguages class and set it as an option. Bellow is an example of using French.

option = BoardDateTimeOptions(
  languages: BoardPickerLanguages(
    locale: 'fr',
    today: 'Aujourd’hui',
    tomorrow: 'Demain',
    now: 'Maintenant',
  ),
);

LICENSE #

BSD 3-Clause License

Copyright (c) 2023, mytooyo

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its
   contributors may be used to endorse or promote products derived from
   this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
79
likes
160
pub points
93%
popularity

Publisher

verified publishermytooyo.dev

Picker to select date and time for Flutter. It is both a calendar and a picker, offering a variety of options as a package.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

collection, flutter, intl

More

Packages that depend on board_datetime_picker