mirror of
https://github.com/Iconica-Development/flutter_date_time_picker.git
synced 2025-05-18 10:23:50 +02:00
Merge pull request #41 from Iconica-Development/feature/borderscroll
feat: Controller now has to be provided as parameter so the selected …
This commit is contained in:
commit
706ecf99f9
18 changed files with 271 additions and 201 deletions
|
@ -1,3 +1,7 @@
|
|||
## 4.0.0
|
||||
|
||||
- Controller has to be specified given to the [DragDownDateTimePicker] so the date can be changed outside of the widget itself.
|
||||
|
||||
## 3.3.3
|
||||
|
||||
- Added option for date box theme for marked dates and a boolean to use it
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
# This file tracks properties of this Flutter project.
|
||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||
#
|
||||
# This file should be version controlled.
|
||||
# This file should be version controlled and should not be manually edited.
|
||||
|
||||
version:
|
||||
revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||
channel: stable
|
||||
revision: "6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e"
|
||||
channel: "stable"
|
||||
|
||||
project_type: app
|
||||
|
||||
|
@ -13,11 +13,26 @@ project_type: app
|
|||
migration:
|
||||
platforms:
|
||||
- platform: root
|
||||
create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||
base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||
create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
- platform: android
|
||||
create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
- platform: ios
|
||||
create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
- platform: linux
|
||||
create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
- platform: macos
|
||||
create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
- platform: web
|
||||
create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||
base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||
create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
- platform: windows
|
||||
create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e
|
||||
|
||||
# User provided section
|
||||
|
||||
|
|
|
@ -156,32 +156,38 @@ class DatePickerDemo extends StatelessWidget {
|
|||
),
|
||||
DragDownDateTimePicker(
|
||||
onTimerPickerSheetChange: (value) {},
|
||||
alwaysUse24HourFormat: true,
|
||||
dateTimePickerTheme: const DateTimePickerTheme(
|
||||
backgroundColor: Colors.white,
|
||||
markedIndicatorColor: Colors.red,
|
||||
baseTheme: DateBoxTheme(
|
||||
controller: DateTimePickerController(
|
||||
initialDate: DateTime.now(),
|
||||
),
|
||||
configuration: DateTimePickerConfiguration(
|
||||
highlightToday: true,
|
||||
alwaysUse24HourFormat: true,
|
||||
markedDates: [DateTime.now().subtract(const Duration(days: 1))],
|
||||
theme: const DateTimePickerTheme(
|
||||
backgroundColor: Colors.white,
|
||||
textStyle: TextStyle(color: Colors.black),
|
||||
),
|
||||
selectedTheme: DateBoxTheme(
|
||||
backgroundColor: Color(0x4BF44336),
|
||||
textStyle: TextStyle(
|
||||
color: Colors.red,
|
||||
markedIndicatorColor: Colors.red,
|
||||
baseTheme: DateBoxTheme(
|
||||
backgroundColor: Colors.white,
|
||||
textStyle: TextStyle(color: Colors.black),
|
||||
),
|
||||
),
|
||||
highlightTheme: DateBoxTheme(
|
||||
backgroundColor: Colors.red,
|
||||
textStyle: TextStyle(
|
||||
color: Colors.white,
|
||||
selectedTheme: DateBoxTheme(
|
||||
backgroundColor: Color(0x4BF44336),
|
||||
textStyle: TextStyle(
|
||||
color: Colors.red,
|
||||
),
|
||||
),
|
||||
highlightTheme: DateBoxTheme(
|
||||
backgroundColor: Colors.red,
|
||||
textStyle: TextStyle(
|
||||
color: Colors.white,
|
||||
),
|
||||
),
|
||||
barTheme: DateTimePickerBarTheme(
|
||||
barColor: Colors.black,
|
||||
barOpacity: 1,
|
||||
),
|
||||
),
|
||||
barTheme: DateTimePickerBarTheme(
|
||||
barColor: Colors.black,
|
||||
barOpacity: 1,
|
||||
),
|
||||
),
|
||||
markedDates: [DateTime.now().subtract(const Duration(days: 1))],
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
|
@ -68,7 +68,7 @@ packages:
|
|||
path: ".."
|
||||
relative: true
|
||||
source: path
|
||||
version: "3.3.2"
|
||||
version: "4.0.0"
|
||||
flutter_lints:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
library flutter_date_time_picker;
|
||||
|
||||
export 'src/drag_down_date_time_picker.dart' show DragDownDateTimePicker;
|
||||
export 'src/utils/date_time_picker_controller.dart';
|
||||
export 'src/utils/date_time_picker_config.dart';
|
||||
export 'src/overlay_date_time_picker.dart' show OverlayDateTimePicker;
|
||||
export 'src/models/date_constraint.dart';
|
||||
export 'src/enums/date_box_shape.dart';
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_date_time_picker/src/models/date_time_picker_theme.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_config.dart';
|
||||
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_controller.dart';
|
||||
import 'package:flutter_date_time_picker/src/widgets/month_date_time_picker/month_date_time_picker_sheet.dart';
|
||||
import 'package:flutter_date_time_picker/src/widgets/week_date_time_picker/week_date_time_picker_sheet.dart';
|
||||
|
@ -15,59 +16,23 @@ class DragDownDateTimePicker extends StatefulWidget {
|
|||
/// Both views can be dragged sideways to show the next or previous week/month.
|
||||
|
||||
const DragDownDateTimePicker({
|
||||
this.dateTimePickerTheme = const DateTimePickerTheme(),
|
||||
this.header,
|
||||
required this.controller,
|
||||
required this.configuration,
|
||||
this.onTimerPickerSheetChange,
|
||||
this.onTapDay,
|
||||
this.highlightToday = true,
|
||||
this.wrongTimeDialog,
|
||||
this.alwaysUse24HourFormat,
|
||||
this.pickTime = false,
|
||||
this.initialDate,
|
||||
this.markedDates,
|
||||
this.disabledDates,
|
||||
this.disabledTimes,
|
||||
this.child,
|
||||
super.key,
|
||||
});
|
||||
|
||||
final DateTimePickerController controller;
|
||||
final DateTimePickerConfiguration configuration;
|
||||
|
||||
/// The child contained by the DatePicker.
|
||||
final Widget? child;
|
||||
|
||||
/// A [Widget] to display when the user picks a disabled time in the [TimePickerDialog]
|
||||
final Widget? wrongTimeDialog;
|
||||
|
||||
/// Visual properties for the [DragDownDateTimePicker]
|
||||
final DateTimePickerTheme dateTimePickerTheme;
|
||||
|
||||
/// Widget shown at the top of the [DragDownDateTimePicker]
|
||||
final Widget? header;
|
||||
|
||||
/// Callback that provides the date tapped on as a [DateTime] object.
|
||||
final Function(DateTime)? onTapDay;
|
||||
|
||||
/// Whether the current day should be highlighted in the [DragDownDateTimePicker]
|
||||
final bool highlightToday;
|
||||
|
||||
/// a [bool] to set de clock on [TimePickerDialog] to a fixed 24 or 12-hour format.
|
||||
/// By default this gets determined by the settings on the user device.
|
||||
final bool? alwaysUse24HourFormat;
|
||||
|
||||
/// [pickTime] is a [bool] that determines if the user is able to pick a time after picking a date using the [TimePickerDialog].
|
||||
final bool pickTime;
|
||||
|
||||
/// indicates the starting date. Default is [DateTime.now()]
|
||||
final DateTime? initialDate;
|
||||
|
||||
/// [markedDates] contain the dates [DateTime] that will be marked in the [DragDownDateTimePicker] by a small dot.
|
||||
final List<DateTime>? markedDates;
|
||||
|
||||
/// a [List] of [DateTime] objects that will be disabled and cannot be interacted with whatsoever.
|
||||
final List<DateTime>? disabledDates;
|
||||
|
||||
/// a [List] of [TimeOfDay] objects that cannot be picked in the [TimePickerDialog].
|
||||
final List<TimeOfDay>? disabledTimes;
|
||||
|
||||
/// Function that gets called when the view changes from week to month or vice versa.
|
||||
/// The value is the amount of scrolledpixels.
|
||||
final Function(double)? onTimerPickerSheetChange;
|
||||
|
@ -77,7 +42,8 @@ class DragDownDateTimePicker extends StatefulWidget {
|
|||
}
|
||||
|
||||
class _DragDownDateTimePickerState extends State<DragDownDateTimePicker> {
|
||||
late DateTimePickerController _dateTimePickerController;
|
||||
late final DateTimePickerController _dateTimePickerController =
|
||||
widget.controller;
|
||||
|
||||
final DraggableScrollableController _dragController =
|
||||
DraggableScrollableController();
|
||||
|
@ -87,20 +53,6 @@ class _DragDownDateTimePickerState extends State<DragDownDateTimePicker> {
|
|||
super.initState();
|
||||
initializeDateFormatting();
|
||||
|
||||
_dateTimePickerController = DateTimePickerController(
|
||||
highlightToday: widget.highlightToday,
|
||||
alwaysUse24HourFormat: widget.alwaysUse24HourFormat,
|
||||
pickTime: widget.pickTime,
|
||||
theme: widget.dateTimePickerTheme,
|
||||
header: widget.header,
|
||||
markedDates: widget.markedDates,
|
||||
disabledDates: widget.disabledDates,
|
||||
disabledTimes: widget.disabledTimes,
|
||||
onTapDayCallBack: widget.onTapDay,
|
||||
browsingDate: widget.initialDate ?? DateTime.now(),
|
||||
selectedDate: widget.initialDate ?? DateTime.now(),
|
||||
);
|
||||
|
||||
_dateTimePickerController.addListener(() {
|
||||
setState(() {});
|
||||
});
|
||||
|
@ -129,9 +81,9 @@ class _DragDownDateTimePickerState extends State<DragDownDateTimePicker> {
|
|||
child: DraggableScrollableSheet(
|
||||
controller: _dragController,
|
||||
snap: true,
|
||||
minChildSize: _dateTimePickerController.theme.weekViewSize,
|
||||
initialChildSize: _dateTimePickerController.theme.weekViewSize,
|
||||
maxChildSize: _dateTimePickerController.theme.monthViewSize,
|
||||
minChildSize: widget.configuration.theme.weekViewSize,
|
||||
initialChildSize: widget.configuration.theme.weekViewSize,
|
||||
maxChildSize: widget.configuration.theme.monthViewSize,
|
||||
builder: (context, scrollController) {
|
||||
double dragSize =
|
||||
_dragController.isAttached ? _dragController.size : 0;
|
||||
|
@ -147,8 +99,7 @@ class _DragDownDateTimePickerState extends State<DragDownDateTimePicker> {
|
|||
padding: const EdgeInsets.only(bottom: 12.5),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color:
|
||||
_dateTimePickerController.theme.backgroundColor,
|
||||
color: widget.configuration.theme.backgroundColor,
|
||||
borderRadius: const BorderRadius.only(
|
||||
bottomLeft: Radius.circular(20),
|
||||
bottomRight: Radius.circular(20),
|
||||
|
@ -161,21 +112,25 @@ class _DragDownDateTimePickerState extends State<DragDownDateTimePicker> {
|
|||
],
|
||||
),
|
||||
child: dragSize <
|
||||
_dateTimePickerController
|
||||
.theme.weekMonthTriggerSize
|
||||
widget
|
||||
.configuration.theme.weekMonthTriggerSize
|
||||
? WeekDateTimePickerSheet(
|
||||
dateTimePickerController:
|
||||
_dateTimePickerController,
|
||||
dateTimePickerConfiguration:
|
||||
widget.configuration,
|
||||
weekDateBoxSize: widget
|
||||
.dateTimePickerTheme.weekDateBoxSize,
|
||||
.configuration.theme.weekDateBoxSize,
|
||||
)
|
||||
: MonthDateTimePickerSheet(
|
||||
dateTimePickerController:
|
||||
_dateTimePickerController,
|
||||
dateTimePickerConfiguration:
|
||||
widget.configuration,
|
||||
monthDateBoxSize: widget
|
||||
.dateTimePickerTheme.monthDateBoxSize,
|
||||
.configuration.theme.monthDateBoxSize,
|
||||
monthDatePadding: widget
|
||||
.dateTimePickerTheme.monthDatePadding,
|
||||
.configuration.theme.monthDatePadding,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_date_time_picker/src/models/date_time_picker_theme.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_config.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_controller.dart';
|
||||
import 'package:flutter_date_time_picker/src/models/date_constraint.dart';
|
||||
import 'package:flutter_date_time_picker/src/widgets/overlay_date_time_picker/overlay.dart';
|
||||
|
@ -106,6 +107,15 @@ class _OverlayDateTimePickerState extends State<OverlayDateTimePicker> {
|
|||
|
||||
late bool _isShown = widget.isShown;
|
||||
late final DateTimePickerController _dateTimePickerController;
|
||||
late final _dateTimePickerConfiguration = DateTimePickerConfiguration(
|
||||
highlightToday: widget.highlightToday,
|
||||
alwaysUse24HourFormat: widget.alwaysUse24HourFormat,
|
||||
pickTime: widget.pickTime,
|
||||
theme: widget.theme,
|
||||
markedDates: widget.markedDates,
|
||||
disabledDates: widget.disabledDates,
|
||||
disabledTimes: widget.disabledTimes,
|
||||
);
|
||||
|
||||
_DropdownRoute? _dropdownRoute;
|
||||
|
||||
|
@ -114,21 +124,13 @@ class _OverlayDateTimePickerState extends State<OverlayDateTimePicker> {
|
|||
super.initState();
|
||||
initializeDateFormatting();
|
||||
_dateTimePickerController = DateTimePickerController(
|
||||
highlightToday: widget.highlightToday,
|
||||
alwaysUse24HourFormat: widget.alwaysUse24HourFormat,
|
||||
pickTime: widget.pickTime,
|
||||
theme: widget.theme,
|
||||
markedDates: widget.markedDates,
|
||||
disabledDates: widget.disabledDates,
|
||||
disabledTimes: widget.disabledTimes,
|
||||
onTapDayCallBack: (date) {
|
||||
widget.onTapDay?.call(date);
|
||||
if (widget.closeOnSelectDate) {
|
||||
Navigator.of(context).pop();
|
||||
}
|
||||
},
|
||||
browsingDate: widget.initialDate ?? DateTime.now(),
|
||||
selectedDate: widget.initialDate ?? DateTime.now(),
|
||||
initialDate: widget.initialDate ?? DateTime.now(),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -232,6 +234,7 @@ class _OverlayDateTimePickerState extends State<OverlayDateTimePicker> {
|
|||
weekdayTextStyle: widget.textStyle,
|
||||
size: widget.size,
|
||||
controller: _dateTimePickerController,
|
||||
configuration: _dateTimePickerConfiguration,
|
||||
showWeekDays: true,
|
||||
onNextDate: nextDate,
|
||||
onPreviousDate: previousDate,
|
||||
|
|
47
lib/src/utils/date_time_picker_config.dart
Normal file
47
lib/src/utils/date_time_picker_config.dart
Normal file
|
@ -0,0 +1,47 @@
|
|||
// SPDX-FileCopyrightText: 2023 Iconica
|
||||
//
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_date_time_picker/flutter_date_time_picker.dart';
|
||||
|
||||
class DateTimePickerConfiguration {
|
||||
DateTimePickerConfiguration({
|
||||
required this.theme,
|
||||
this.pickTime = false,
|
||||
this.highlightToday = true,
|
||||
this.alwaysUse24HourFormat,
|
||||
this.header,
|
||||
this.wrongTimeDialog,
|
||||
this.markedDates,
|
||||
this.disabledDates,
|
||||
this.disabledTimes,
|
||||
});
|
||||
|
||||
/// Whether the current day should be highlighted in the [DragDownDateTimePicker]
|
||||
final bool highlightToday;
|
||||
|
||||
/// a [bool] to set de clock on [TimePickerDialog] to a fixed 24 or 12-hour format.
|
||||
/// By default this gets determined by the settings on the user device.
|
||||
final bool? alwaysUse24HourFormat;
|
||||
|
||||
/// Widget shown at the top of the [DragDownDateTimePicker]
|
||||
final Widget? header;
|
||||
|
||||
final Widget? wrongTimeDialog;
|
||||
|
||||
/// Visual properties for the [DragDownDateTimePicker]
|
||||
final DateTimePickerTheme theme;
|
||||
|
||||
/// [markedDates] contain the dates [DateTime] that will be marked in the [DragDownDateTimePicker] by a small dot.
|
||||
final List<DateTime>? markedDates;
|
||||
|
||||
/// a [List] of [DateTime] objects that will be disabled and cannot be interacted with whatsoever.
|
||||
final List<DateTime>? disabledDates;
|
||||
|
||||
/// a [List] of [TimeOfDay] objects that cannot be picked in the [TimePickerDialog].
|
||||
final List<TimeOfDay>? disabledTimes;
|
||||
|
||||
/// [pickTime] is a [bool] that determines if the user is able to pick a time after picking a date using the [TimePickerDialog].
|
||||
final bool pickTime;
|
||||
}
|
|
@ -3,44 +3,26 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_date_time_picker/src/models/date_time_picker_theme.dart';
|
||||
|
||||
class DateTimePickerController extends ChangeNotifier {
|
||||
DateTimePickerController({
|
||||
required this.theme,
|
||||
required this.highlightToday,
|
||||
required this.pickTime,
|
||||
required this.browsingDate,
|
||||
required this.selectedDate,
|
||||
this.alwaysUse24HourFormat,
|
||||
this.header,
|
||||
this.wrongTimeDialog,
|
||||
this.markedDates,
|
||||
this.disabledDates,
|
||||
this.disabledTimes,
|
||||
required this.initialDate,
|
||||
this.onTapDayCallBack,
|
||||
this.onBorderScrollCallback,
|
||||
});
|
||||
|
||||
/// Callback that provides the date tapped on as a [DateTime] object.
|
||||
final Function(DateTime)? onTapDayCallBack;
|
||||
|
||||
/// Callback that provides the new date which is scroll to. If this is null the scroll feature is disabled.
|
||||
final Function(DateTime)? onBorderScrollCallback;
|
||||
|
||||
final DateTime initialDate;
|
||||
|
||||
final PageController _pageController = PageController(initialPage: 1);
|
||||
|
||||
final bool highlightToday;
|
||||
final bool? alwaysUse24HourFormat;
|
||||
|
||||
final Widget? header;
|
||||
|
||||
final Widget? wrongTimeDialog;
|
||||
|
||||
final DateTimePickerTheme theme;
|
||||
|
||||
final List<DateTime>? markedDates;
|
||||
final List<DateTime>? disabledDates;
|
||||
final List<TimeOfDay>? disabledTimes;
|
||||
final bool pickTime;
|
||||
|
||||
final Function(DateTime)? onTapDayCallBack;
|
||||
|
||||
DateTime browsingDate;
|
||||
DateTime selectedDate;
|
||||
late DateTime browsingDate = initialDate;
|
||||
late DateTime selectedDate = initialDate;
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
|
@ -74,6 +56,17 @@ class DateTimePickerController extends ChangeNotifier {
|
|||
}
|
||||
}
|
||||
|
||||
void onBorderScroll(DateTime date) {
|
||||
browsingDate = date;
|
||||
selectedDate = date;
|
||||
|
||||
notifyListeners();
|
||||
|
||||
onBorderScrollCallback?.call(
|
||||
date,
|
||||
);
|
||||
}
|
||||
|
||||
PageController get pageController => _pageController;
|
||||
|
||||
void setBrowsingDate(DateTime date) {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_date_time_picker/flutter_date_time_picker.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_controller.dart';
|
||||
import 'package:flutter_date_time_picker/src/widgets/overlay_date_time_picker/overlay.dart';
|
||||
|
||||
class DateTimePicker extends StatefulWidget {
|
||||
|
@ -92,6 +91,15 @@ class DateTimePicker extends StatefulWidget {
|
|||
class _DateTimePickerState extends State<DateTimePicker> {
|
||||
late final DateTimePickerController _dateTimePickerController =
|
||||
DateTimePickerController(
|
||||
onTapDayCallBack: (date) {
|
||||
widget.onTapDay?.call(date);
|
||||
if (widget.closeOnSelectDate) {
|
||||
Navigator.of(context).pop();
|
||||
}
|
||||
},
|
||||
initialDate: widget.initialDate ?? DateTime.now(),
|
||||
);
|
||||
late final _dateTimePickerConfiguration = DateTimePickerConfiguration(
|
||||
highlightToday: widget.highlightToday,
|
||||
alwaysUse24HourFormat: widget.alwaysUse24HourFormat,
|
||||
pickTime: widget.pickTime,
|
||||
|
@ -99,15 +107,8 @@ class _DateTimePickerState extends State<DateTimePicker> {
|
|||
markedDates: widget.markedDates,
|
||||
disabledDates: widget.disabledDates,
|
||||
disabledTimes: widget.disabledTimes,
|
||||
onTapDayCallBack: (date) {
|
||||
widget.onTapDay?.call(date);
|
||||
if (widget.closeOnSelectDate) {
|
||||
Navigator.of(context).pop();
|
||||
}
|
||||
},
|
||||
browsingDate: widget.initialDate ?? DateTime.now(),
|
||||
selectedDate: widget.initialDate ?? DateTime.now(),
|
||||
);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var size = MediaQuery.of(context).size;
|
||||
|
@ -149,6 +150,7 @@ class _DateTimePickerState extends State<DateTimePicker> {
|
|||
weekdayTextStyle: widget.weekdayTextStyle,
|
||||
size: widget.size ?? Size(size.width, size.height),
|
||||
controller: _dateTimePickerController,
|
||||
configuration: _dateTimePickerConfiguration,
|
||||
showWeekDays: true,
|
||||
onNextDate: nextDate,
|
||||
onPreviousDate: previousDate,
|
||||
|
|
|
@ -8,6 +8,7 @@ import 'package:flutter_date_time_picker/src/extensions/date_time.dart';
|
|||
import 'package:flutter_date_time_picker/src/extensions/time_of_day.dart';
|
||||
import 'package:flutter_date_time_picker/src/models/date_box_current_theme.dart';
|
||||
import 'package:flutter_date_time_picker/src/models/date_time_picker_theme.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_config.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_controller.dart';
|
||||
import 'package:flutter_date_time_picker/src/widgets/marked_icon.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
@ -17,11 +18,13 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
required this.date,
|
||||
required this.dateTimePickerController,
|
||||
required this.monthDateBoxSize,
|
||||
required this.dateTimePickerConfiguration,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
|
||||
final DateTime date;
|
||||
final DateTimePickerController dateTimePickerController;
|
||||
final DateTimePickerConfiguration dateTimePickerConfiguration;
|
||||
final double monthDateBoxSize;
|
||||
|
||||
@override
|
||||
|
@ -39,7 +42,7 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
child: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
if (dateTimePickerController.theme.monthWeekDayHeaders)
|
||||
if (dateTimePickerConfiguration.theme.monthWeekDayHeaders)
|
||||
Row(
|
||||
children: List.generate(
|
||||
7,
|
||||
|
@ -51,8 +54,8 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
date.daysOfWeek().elementAt(index),
|
||||
)
|
||||
.toUpperCase()[0],
|
||||
style:
|
||||
dateTimePickerController.theme.baseTheme.textStyle,
|
||||
style: dateTimePickerConfiguration
|
||||
.theme.baseTheme.textStyle,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -79,8 +82,11 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
currentDateBoxTheme = determineCurrentDateBoxTheme(context,
|
||||
addedIndex, daysToSkip, dateTimePickerController.theme);
|
||||
currentDateBoxTheme = determineCurrentDateBoxTheme(
|
||||
context,
|
||||
addedIndex,
|
||||
daysToSkip,
|
||||
dateTimePickerConfiguration.theme);
|
||||
|
||||
return GestureDetector(
|
||||
onTap: isDisabled(
|
||||
|
@ -99,23 +105,24 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
|
||||
timeOfDay = const TimeOfDay(hour: 0, minute: 0);
|
||||
|
||||
if (dateTimePickerController.pickTime) {
|
||||
if (dateTimePickerConfiguration.pickTime) {
|
||||
timeOfDay = await displayTimePicker(
|
||||
context, dateTimePickerController);
|
||||
context, dateTimePickerConfiguration);
|
||||
}
|
||||
|
||||
if (dateTimePickerController.wrongTimeDialog !=
|
||||
if (dateTimePickerConfiguration.wrongTimeDialog !=
|
||||
null) {
|
||||
if (timeOfDay != null &&
|
||||
timeOfDay.containsAny(
|
||||
dateTimePickerController.disabledTimes ??
|
||||
dateTimePickerConfiguration
|
||||
.disabledTimes ??
|
||||
[],
|
||||
)) {
|
||||
if (context.mounted) {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) =>
|
||||
dateTimePickerController
|
||||
dateTimePickerConfiguration
|
||||
.wrongTimeDialog!,
|
||||
);
|
||||
}
|
||||
|
@ -138,8 +145,8 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
vertical: 5, horizontal: 5),
|
||||
decoration: BoxDecoration(
|
||||
color: currentDateBoxTheme.backgroundColor,
|
||||
borderRadius:
|
||||
_determineBorderRadius(dateTimePickerController),
|
||||
borderRadius: _determineBorderRadius(
|
||||
dateTimePickerConfiguration),
|
||||
),
|
||||
height: monthDateBoxSize,
|
||||
width: monthDateBoxSize,
|
||||
|
@ -157,7 +164,7 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
MarkedIcon(
|
||||
width: monthDateBoxSize / 4,
|
||||
height: monthDateBoxSize / 4,
|
||||
color: dateTimePickerController
|
||||
color: dateTimePickerConfiguration
|
||||
.theme.markedIndicatorColor,
|
||||
),
|
||||
],
|
||||
|
@ -181,7 +188,7 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
date.month,
|
||||
index + 1 - daysToSkip,
|
||||
).equals(
|
||||
dateTimePickerController.highlightToday
|
||||
dateTimePickerConfiguration.highlightToday
|
||||
? DateTime.now()
|
||||
: dateTimePickerController.selectedDate,
|
||||
);
|
||||
|
@ -228,7 +235,7 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
date.month,
|
||||
index + 1 - daysToSkip,
|
||||
).containsAny(
|
||||
dateTimePickerController.disabledDates ?? [],
|
||||
dateTimePickerConfiguration.disabledDates ?? [],
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -246,7 +253,7 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
date.month,
|
||||
index + 1 - daysToSkip,
|
||||
).equals(
|
||||
dateTimePickerController.highlightToday
|
||||
dateTimePickerConfiguration.highlightToday
|
||||
? DateTime.now()
|
||||
: dateTimePickerController.selectedDate,
|
||||
) &&
|
||||
|
@ -255,13 +262,13 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
date.month,
|
||||
index + 1 - daysToSkip,
|
||||
).containsAny(
|
||||
dateTimePickerController.markedDates ?? [],
|
||||
dateTimePickerConfiguration.markedDates ?? [],
|
||||
);
|
||||
}
|
||||
|
||||
BorderRadius _determineBorderRadius(
|
||||
DateTimePickerController dateTimePickerController) {
|
||||
switch (dateTimePickerController.theme.dateBoxShape) {
|
||||
DateTimePickerConfiguration dateTimePickerConfiguration) {
|
||||
switch (dateTimePickerConfiguration.theme.dateBoxShape) {
|
||||
case DateBoxShape.circle:
|
||||
return BorderRadius.circular(monthDateBoxSize * 2);
|
||||
case DateBoxShape.rectangle:
|
||||
|
@ -273,7 +280,7 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
}
|
||||
|
||||
displayTimePicker(BuildContext context,
|
||||
DateTimePickerController dateTimePickerController) async {
|
||||
DateTimePickerConfiguration dateTimePickerConfiguration) async {
|
||||
return await showTimePicker(
|
||||
context: context,
|
||||
initialTime: TimeOfDay.now(),
|
||||
|
@ -281,7 +288,7 @@ displayTimePicker(BuildContext context,
|
|||
return MediaQuery(
|
||||
data: MediaQuery.of(context).copyWith(
|
||||
alwaysUse24HourFormat:
|
||||
dateTimePickerController.alwaysUse24HourFormat),
|
||||
dateTimePickerConfiguration.alwaysUse24HourFormat),
|
||||
child: child!,
|
||||
);
|
||||
});
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_date_time_picker/src/extensions/date_time.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_config.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_controller.dart';
|
||||
import 'package:flutter_date_time_picker/src/widgets/month_date_time_picker/month_date_time_picker.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
@ -11,26 +12,28 @@ import 'package:intl/intl.dart';
|
|||
class MonthDateTimePickerSheet extends StatelessWidget {
|
||||
const MonthDateTimePickerSheet({
|
||||
required this.dateTimePickerController,
|
||||
required this.dateTimePickerConfiguration,
|
||||
required this.monthDateBoxSize,
|
||||
required this.monthDatePadding,
|
||||
super.key,
|
||||
});
|
||||
|
||||
final DateTimePickerController dateTimePickerController;
|
||||
final DateTimePickerConfiguration dateTimePickerConfiguration;
|
||||
final double monthDateBoxSize;
|
||||
final EdgeInsetsGeometry monthDatePadding;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var theme = dateTimePickerController.theme;
|
||||
var theme = dateTimePickerConfiguration.theme;
|
||||
var size = MediaQuery.of(context).size;
|
||||
|
||||
return Column(
|
||||
children: [
|
||||
if (dateTimePickerController.header != null) ...[
|
||||
if (dateTimePickerConfiguration.header != null) ...[
|
||||
Align(
|
||||
alignment: Alignment.topCenter,
|
||||
child: dateTimePickerController.header!,
|
||||
child: dateTimePickerConfiguration.header!,
|
||||
),
|
||||
],
|
||||
Padding(
|
||||
|
@ -74,13 +77,15 @@ class MonthDateTimePickerSheet extends StatelessWidget {
|
|||
},
|
||||
children: [
|
||||
MonthDateTimePicker(
|
||||
date: dateTimePickerController.browsingDate.month == 1
|
||||
? DateTime(
|
||||
dateTimePickerController.browsingDate.year - 1, 12, 1)
|
||||
: DateTime(dateTimePickerController.browsingDate.year,
|
||||
dateTimePickerController.browsingDate.month - 1, 1),
|
||||
monthDateBoxSize: monthDateBoxSize,
|
||||
dateTimePickerController: dateTimePickerController),
|
||||
date: dateTimePickerController.browsingDate.month == 1
|
||||
? DateTime(
|
||||
dateTimePickerController.browsingDate.year - 1, 12, 1)
|
||||
: DateTime(dateTimePickerController.browsingDate.year,
|
||||
dateTimePickerController.browsingDate.month - 1, 1),
|
||||
monthDateBoxSize: monthDateBoxSize,
|
||||
dateTimePickerController: dateTimePickerController,
|
||||
dateTimePickerConfiguration: dateTimePickerConfiguration,
|
||||
),
|
||||
MonthDateTimePicker(
|
||||
date: DateTime(
|
||||
dateTimePickerController.browsingDate.year,
|
||||
|
@ -88,6 +93,7 @@ class MonthDateTimePickerSheet extends StatelessWidget {
|
|||
1,
|
||||
),
|
||||
dateTimePickerController: dateTimePickerController,
|
||||
dateTimePickerConfiguration: dateTimePickerConfiguration,
|
||||
monthDateBoxSize: monthDateBoxSize),
|
||||
MonthDateTimePicker(
|
||||
date: dateTimePickerController.browsingDate.month == 12
|
||||
|
@ -99,6 +105,7 @@ class MonthDateTimePickerSheet extends StatelessWidget {
|
|||
: DateTime(dateTimePickerController.browsingDate.year,
|
||||
dateTimePickerController.browsingDate.month + 1, 1),
|
||||
dateTimePickerController: dateTimePickerController,
|
||||
dateTimePickerConfiguration: dateTimePickerConfiguration,
|
||||
monthDateBoxSize: monthDateBoxSize),
|
||||
],
|
||||
),
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_date_time_picker/flutter_date_time_picker.dart';
|
||||
import 'package:flutter_date_time_picker/src/extensions/date_time.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_controller.dart';
|
||||
import 'package:flutter_date_time_picker/src/widgets/overlay_date_time_picker/pickable_date.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
|
@ -13,6 +12,7 @@ class DatePicker extends StatelessWidget {
|
|||
const DatePicker({
|
||||
super.key,
|
||||
required this.controller,
|
||||
required this.configuration,
|
||||
required this.theme,
|
||||
required this.weekdayTextStyle,
|
||||
required this.onSelectDate,
|
||||
|
@ -22,6 +22,7 @@ class DatePicker extends StatelessWidget {
|
|||
});
|
||||
|
||||
final DateTimePickerController controller;
|
||||
final DateTimePickerConfiguration configuration;
|
||||
final DateTimePickerTheme theme;
|
||||
final TextStyle weekdayTextStyle;
|
||||
final void Function(DateTime date) onSelectDate;
|
||||
|
@ -95,7 +96,7 @@ class DatePicker extends StatelessWidget {
|
|||
return Padding(
|
||||
padding: const EdgeInsets.all(2.0),
|
||||
child: PickableDate(
|
||||
isMarked: controller.markedDates?.any(
|
||||
isMarked: configuration.markedDates?.any(
|
||||
(e) => isSameDay(e, todayDate),
|
||||
) ??
|
||||
false,
|
||||
|
@ -103,7 +104,7 @@ class DatePicker extends StatelessWidget {
|
|||
isDisabled:
|
||||
isDisabled(addedIndex + index, daysToSkip, todayDate),
|
||||
isSelected: controller.selectedDate == todayDate,
|
||||
isToday: isToday(todayDate) && controller.highlightToday,
|
||||
isToday: isToday(todayDate) && configuration.highlightToday,
|
||||
theme: theme,
|
||||
date: todayDate,
|
||||
onPressed: onSelectDate,
|
||||
|
@ -131,7 +132,7 @@ class DatePicker extends StatelessWidget {
|
|||
date.month,
|
||||
index + 1 - daysToSkip,
|
||||
).containsAny(
|
||||
controller.disabledDates ?? [],
|
||||
configuration.disabledDates ?? [],
|
||||
) ||
|
||||
!dateTimeConstraint.inRange(date);
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_date_time_picker/src/models/date_time_picker_theme.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_config.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_controller.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/locking_page_scroll_physics.dart';
|
||||
import 'package:flutter_date_time_picker/src/widgets/overlay_date_time_picker/date_picker.dart';
|
||||
|
@ -17,6 +18,7 @@ class OverlayDateTimeContent extends StatefulWidget {
|
|||
required this.weekdayTextStyle,
|
||||
required this.size,
|
||||
required this.controller,
|
||||
required this.configuration,
|
||||
required this.showWeekDays,
|
||||
required this.onNextDate,
|
||||
required this.onPreviousDate,
|
||||
|
@ -29,6 +31,7 @@ class OverlayDateTimeContent extends StatefulWidget {
|
|||
final TextStyle weekdayTextStyle;
|
||||
final Size size;
|
||||
final DateTimePickerController controller;
|
||||
final DateTimePickerConfiguration configuration;
|
||||
final bool showWeekDays;
|
||||
final DateTimeConstraint dateTimeConstraint;
|
||||
|
||||
|
@ -149,6 +152,7 @@ class _OverlayDateTimeContentState extends State<OverlayDateTimeContent> {
|
|||
children: [
|
||||
DatePicker(
|
||||
controller: widget.controller,
|
||||
configuration: widget.configuration,
|
||||
onSelectDate: _onSelectDate,
|
||||
theme: widget.theme,
|
||||
weekdayTextStyle: widget.weekdayTextStyle,
|
||||
|
@ -158,6 +162,7 @@ class _OverlayDateTimeContentState extends State<OverlayDateTimeContent> {
|
|||
),
|
||||
DatePicker(
|
||||
controller: widget.controller,
|
||||
configuration: widget.configuration,
|
||||
onSelectDate: _onSelectDate,
|
||||
theme: widget.theme,
|
||||
weekdayTextStyle: widget.weekdayTextStyle,
|
||||
|
@ -167,6 +172,7 @@ class _OverlayDateTimeContentState extends State<OverlayDateTimeContent> {
|
|||
),
|
||||
DatePicker(
|
||||
controller: widget.controller,
|
||||
configuration: widget.configuration,
|
||||
onSelectDate: _onSelectDate,
|
||||
theme: widget.theme,
|
||||
weekdayTextStyle: widget.weekdayTextStyle,
|
||||
|
|
|
@ -7,19 +7,20 @@ import 'package:flutter_date_time_picker/flutter_date_time_picker.dart';
|
|||
import 'package:flutter_date_time_picker/src/extensions/date_time.dart';
|
||||
import 'package:flutter_date_time_picker/src/extensions/time_of_day.dart';
|
||||
import 'package:flutter_date_time_picker/src/models/date_box_current_theme.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_controller.dart';
|
||||
import 'package:flutter_date_time_picker/src/widgets/marked_icon.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
class WeekDateTimePicker extends StatelessWidget {
|
||||
const WeekDateTimePicker({
|
||||
required this.dateTimePickerController,
|
||||
required this.dateTimePickerConfiguration,
|
||||
required this.date,
|
||||
required this.weekDateBoxSize,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
|
||||
final DateTimePickerController dateTimePickerController;
|
||||
final DateTimePickerConfiguration dateTimePickerConfiguration;
|
||||
|
||||
final DateTime date;
|
||||
|
||||
|
@ -35,7 +36,7 @@ class WeekDateTimePicker extends StatelessWidget {
|
|||
late DateBoxCurrentTheme currentDateBoxTheme;
|
||||
|
||||
currentDateBoxTheme = determineCurrentDateBoxTheme(
|
||||
context, index, dateTimePickerController.theme);
|
||||
context, index, dateTimePickerConfiguration.theme);
|
||||
return GestureDetector(
|
||||
onTap: isDisabled(
|
||||
index,
|
||||
|
@ -48,21 +49,21 @@ class WeekDateTimePicker extends StatelessWidget {
|
|||
|
||||
timeOfDay = const TimeOfDay(hour: 0, minute: 0);
|
||||
|
||||
if (dateTimePickerController.pickTime) {
|
||||
if (dateTimePickerConfiguration.pickTime) {
|
||||
timeOfDay = await displayTimePicker(
|
||||
context, dateTimePickerController);
|
||||
}
|
||||
|
||||
if (dateTimePickerController.wrongTimeDialog != null) {
|
||||
if (dateTimePickerConfiguration.wrongTimeDialog != null) {
|
||||
if (timeOfDay != null &&
|
||||
timeOfDay.containsAny(
|
||||
dateTimePickerController.disabledTimes ?? [],
|
||||
dateTimePickerConfiguration.disabledTimes ?? [],
|
||||
)) {
|
||||
if (context.mounted) {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) =>
|
||||
dateTimePickerController.wrongTimeDialog!,
|
||||
dateTimePickerConfiguration.wrongTimeDialog!,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -90,7 +91,8 @@ class WeekDateTimePicker extends StatelessWidget {
|
|||
date.daysOfWeek().elementAt(index),
|
||||
)
|
||||
.toUpperCase()[0],
|
||||
style: dateTimePickerController.theme.baseTheme.textStyle,
|
||||
style:
|
||||
dateTimePickerConfiguration.theme.baseTheme.textStyle,
|
||||
),
|
||||
const Spacer(),
|
||||
Container(
|
||||
|
@ -99,7 +101,7 @@ class WeekDateTimePicker extends StatelessWidget {
|
|||
decoration: BoxDecoration(
|
||||
color: currentDateBoxTheme.backgroundColor,
|
||||
borderRadius:
|
||||
_determineBorderRadius(dateTimePickerController),
|
||||
_determineBorderRadius(dateTimePickerConfiguration),
|
||||
),
|
||||
child: Stack(
|
||||
children: [
|
||||
|
@ -113,7 +115,7 @@ class WeekDateTimePicker extends StatelessWidget {
|
|||
MarkedIcon(
|
||||
width: weekDateBoxSize / 3,
|
||||
height: weekDateBoxSize / 3,
|
||||
color: dateTimePickerController
|
||||
color: dateTimePickerConfiguration
|
||||
.theme.markedIndicatorColor,
|
||||
)
|
||||
],
|
||||
|
@ -166,7 +168,7 @@ class WeekDateTimePicker extends StatelessWidget {
|
|||
|
||||
bool shouldHighlight(int index) {
|
||||
return date.daysOfWeek().elementAt(index).equals(
|
||||
dateTimePickerController.highlightToday
|
||||
dateTimePickerConfiguration.highlightToday
|
||||
? DateTime.now()
|
||||
: dateTimePickerController.selectedDate,
|
||||
);
|
||||
|
@ -183,24 +185,24 @@ class WeekDateTimePicker extends StatelessWidget {
|
|||
return date
|
||||
.daysOfWeek()
|
||||
.elementAt(index)
|
||||
.containsAny(dateTimePickerController.disabledDates ?? []);
|
||||
.containsAny(dateTimePickerConfiguration.disabledDates ?? []);
|
||||
}
|
||||
|
||||
bool shouldMark(int index) {
|
||||
return !date.daysOfWeek().elementAt(index).equals(
|
||||
dateTimePickerController.highlightToday
|
||||
dateTimePickerConfiguration.highlightToday
|
||||
? DateTime.now()
|
||||
: dateTimePickerController.selectedDate,
|
||||
) &&
|
||||
date
|
||||
.daysOfWeek()
|
||||
.elementAt(index)
|
||||
.containsAny(dateTimePickerController.markedDates ?? []);
|
||||
.containsAny(dateTimePickerConfiguration.markedDates ?? []);
|
||||
}
|
||||
|
||||
BorderRadius _determineBorderRadius(
|
||||
DateTimePickerController dateTimePickerController) {
|
||||
switch (dateTimePickerController.theme.dateBoxShape) {
|
||||
DateTimePickerConfiguration dateTimePickerConfiguration) {
|
||||
switch (dateTimePickerConfiguration.theme.dateBoxShape) {
|
||||
case DateBoxShape.circle:
|
||||
return BorderRadius.circular(weekDateBoxSize * 2);
|
||||
case DateBoxShape.rectangle:
|
||||
|
@ -219,7 +221,7 @@ class WeekDateTimePicker extends StatelessWidget {
|
|||
return MediaQuery(
|
||||
data: MediaQuery.of(context).copyWith(
|
||||
alwaysUse24HourFormat:
|
||||
dateTimePickerController.alwaysUse24HourFormat),
|
||||
dateTimePickerConfiguration.alwaysUse24HourFormat),
|
||||
child: child!,
|
||||
);
|
||||
});
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_date_time_picker/src/extensions/date_time.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_config.dart';
|
||||
import 'package:flutter_date_time_picker/src/utils/date_time_picker_controller.dart';
|
||||
import 'package:flutter_date_time_picker/src/widgets/week_date_time_picker/week_date_time_picker.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
@ -11,12 +12,14 @@ import 'package:intl/intl.dart';
|
|||
class WeekDateTimePickerSheet extends StatelessWidget {
|
||||
const WeekDateTimePickerSheet({
|
||||
required this.dateTimePickerController,
|
||||
required this.dateTimePickerConfiguration,
|
||||
required this.weekDateBoxSize,
|
||||
this.showHeader = false,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
|
||||
final DateTimePickerController dateTimePickerController;
|
||||
final DateTimePickerConfiguration dateTimePickerConfiguration;
|
||||
final bool showHeader;
|
||||
final double weekDateBoxSize;
|
||||
|
||||
|
@ -36,14 +39,14 @@ class WeekDateTimePickerSheet extends StatelessWidget {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var theme = dateTimePickerController.theme;
|
||||
var theme = dateTimePickerConfiguration.theme;
|
||||
|
||||
return Column(
|
||||
children: [
|
||||
if (dateTimePickerController.header != null)
|
||||
if (dateTimePickerConfiguration.header != null)
|
||||
Align(
|
||||
alignment: Alignment.topCenter,
|
||||
child: dateTimePickerController.header!,
|
||||
child: dateTimePickerConfiguration.header!,
|
||||
),
|
||||
const SizedBox(
|
||||
height: 10,
|
||||
|
@ -80,6 +83,7 @@ class WeekDateTimePickerSheet extends StatelessWidget {
|
|||
children: [
|
||||
WeekDateTimePicker(
|
||||
dateTimePickerController: dateTimePickerController,
|
||||
dateTimePickerConfiguration: dateTimePickerConfiguration,
|
||||
date: dateTimePickerController.browsingDate.subtract(
|
||||
const Duration(days: 7),
|
||||
),
|
||||
|
@ -87,11 +91,13 @@ class WeekDateTimePickerSheet extends StatelessWidget {
|
|||
),
|
||||
WeekDateTimePicker(
|
||||
dateTimePickerController: dateTimePickerController,
|
||||
dateTimePickerConfiguration: dateTimePickerConfiguration,
|
||||
date: dateTimePickerController.browsingDate,
|
||||
weekDateBoxSize: weekDateBoxSize,
|
||||
),
|
||||
WeekDateTimePicker(
|
||||
dateTimePickerController: dateTimePickerController,
|
||||
dateTimePickerConfiguration: dateTimePickerConfiguration,
|
||||
date: dateTimePickerController.browsingDate.add(
|
||||
const Duration(days: 7),
|
||||
),
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
name: flutter_date_time_picker
|
||||
description: A Flutter package for date and time picker.
|
||||
version: 3.3.3
|
||||
version: 4.0.0
|
||||
|
||||
environment:
|
||||
sdk: ">=3.0.0 <4.0.0"
|
||||
|
|
|
@ -13,7 +13,14 @@ void main() {
|
|||
home: Scaffold(
|
||||
appBar: AppBar(),
|
||||
body: DragDownDateTimePicker(
|
||||
pickTime: false,
|
||||
controller: DateTimePickerController(
|
||||
initialDate: DateTime.now(),
|
||||
),
|
||||
configuration: DateTimePickerConfiguration(
|
||||
theme: const DateTimePickerTheme(),
|
||||
highlightToday: true,
|
||||
pickTime: false,
|
||||
),
|
||||
child: Container(),
|
||||
),
|
||||
),
|
||||
|
@ -27,7 +34,14 @@ void main() {
|
|||
home: Scaffold(
|
||||
appBar: AppBar(),
|
||||
body: DragDownDateTimePicker(
|
||||
pickTime: false,
|
||||
controller: DateTimePickerController(
|
||||
initialDate: DateTime.now(),
|
||||
),
|
||||
configuration: DateTimePickerConfiguration(
|
||||
theme: const DateTimePickerTheme(),
|
||||
highlightToday: true,
|
||||
pickTime: false,
|
||||
),
|
||||
child: Container(),
|
||||
),
|
||||
),
|
||||
|
|
Loading…
Reference in a new issue