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

插件详情v0.4.3

flutter_date_pickers

用于选择日期、周、范围和月份的 Flutter 包。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
2.7万
喜欢数
158
Pub 分数
150

安装插件

flutter pub add flutter_date_pickers

插件介绍

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

一个 Flutter 包,提供可自定义的日期选择器,用于选择日期、周、日期范围和月份。支持 Android、iOS、Web、macOS、Windows 和 Linux 等多个平台。该包提供一致且直观的日期选择用户界面,可轻松集成到 Flutter 应用中。设计灵活且可扩展,允许开发者根据应用设计需求自定义选择器的外观和行为。适用于表单、日程安排工具和基于日历的应用程序。

适合场景

  • 表单输入项需要选择日期
  • 调度和预订系统
  • 日历和计划应用
  • 日期范围筛选
  • 事件创建接口

主要特点

  • 天、周、范围和月选择器类型
  • 跨平台兼容性
  • 可自定义的 UI 主题
  • 与 Flutter 的轻松集成
  • 对本地化的支持
  • 可配置的日期范围

适合对象

  • 开发日历功能的开发者
  • 需要高级日期选择的应用程序
  • 需要多平台日期选择器的项目
  • UI密集型表单组件

使用建议

  • 需要 Flutter SDK 2.5 或更高版本
  • 可能需要额外的样式来支持自定义主题
  • 有限的内置验证
  • 依赖于平台特定的日期处理
  • 未针对非常大的日期范围进行优化

原始 README

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

flutter_date_pickers

Actions Status Pub Likes Health Code size License: MIT GitHub stars

Allows to use date pickers without dialog. Provides some customizable styles for date pickers.

A set of date pickers:

  • DayPicker for one day
  • WeekPicker for whole week
  • RangePicker for random range
  • MonthPicker for month
  • YearPicker for year

How to style date picker

Every date picker constructor take a style object as a parameter (if no styles passed - defaults will be used).

For single value pickers (DayPicker, MonthPicker) it is DatePickerStyles object;

For range pickers (WeekPicker, RangePickers) it is DatePickerRangeStyles object;

Customizable styles: for all date pickers

Property Description
TextStyle displayedPeriodTitle title of the date picker
TextStyle currentDateStyle style for current date
TextStyle disabledDateStyle style for disabled dates (before first and after last date user can pick)
TextStyle selectedDateStyle style for selected date
BoxDecoration selectedSingleDateDecoration decoration for selected date in case single value is selected
TextStyle defaultDateTextStyle style for date which is neither current nor disabled nor selected
DayHeaderStyle dayHeaderStyle style for all weekday headers. For more control under weekday headers styles use dayHeaderStyleBuilder
DayHeaderStyleBuilder dayHeaderStyleBuilder builder to customize weekday header's style
DayHeaderTitleBuilder dayHeaderTitleBuilder builder to customize weekday header's title

only for range date pickers (WeekPicker, RangePicker)

Property Description
BoxDecoration selectedPeriodStartDecoration decoration for the first date of the selected range
BoxDecoration selectedPeriodLastDecoration decoration for the first date of the selected range
BoxDecoration selectedPeriodMiddleDecoration Decoration for the date of the selected range which is not first date and not end date of this range

How to make some dates not selectable date picker

By default only dates before firstDate and after lastDate are not selectable. But you can set custom disabled days. DayPicker, WeekPicker and RangePicker take a SelectableDayPredicate selectableDayPredicate where you can specify function which returns if some date is disabled or not.

If some date is disabled for selection it gets disabledDateStyle.

If selected range or week pretends to include such disabled date UnselectablePeriodException occurs. To handle it - pass onSelectionError callback to date picker.

How to make special decorations for some dates

By default cells are decorated with datePickerStyles slyles (or default if no styles was passed to date picker). If you need special decoration for some days use eventDecorationBuilder. Currently only for DayPicker, WeekPicker and RangePicker.

  • If date is not selected basic styles will be merged with styles from eventDecorationBuilder.
  • If date is current date styles from eventDecorationBuilder win (if there are).
  • Otherwise basic styles (datePickerStyles) win.

What time I will get after selection?

If one day selected: you will get start of the day (00:00:00).

If range/week selected: for start you will get start of the day (00:00:00) by default. for end you will get end of the day (23:59:59.999) by default.

If month selected: you will get start (00:00:00) of the 1 day of month by default. If selected month same as month of the firstDate - you will get firstDate.

Usage

// Create week date picker with passed parameters
Widget buildWeekDatePicker (DateTime selectedDate, DateTime firstAllowedDate, DateTime lastAllowedDate, ValueChanged<DatePeriod> onNewSelected) {

 // add some colors to default settings
    DatePickerRangeStyles styles = DatePickerRangeStyles(
      selectedPeriodLastDecoration: BoxDecoration(
          color: Colors.red,
          borderRadius: BorderRadiusDirectional.only(
              topEnd: Radius.circular(10.0),
              bottomEnd: Radius.circular(10.0))),
      selectedPeriodStartDecoration: BoxDecoration(
        color: Colors.green,
        borderRadius: BorderRadiusDirectional.only(
            topStart: Radius.circular(10.0), bottomStart: Radius.circular(10.0)),
      ),
      selectedPeriodMiddleDecoration: BoxDecoration(
          color: Colors.yellow, shape: BoxShape.rectangle),
    );
    
  return WeekPicker(
      selectedDate: selectedDate,
      onChanged: onNewSelected,
      firstDate: firstAllowedDate,
      lastDate: lastAllowedDate,
      datePickerStyles: styles
  );
}

Example app

Please checkout example.

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

所属分类

依赖

依赖清单 1 项

源码仓库

使用此插件的项目