diff --git a/CHANGELOG.md b/CHANGELOG.md index e444323..7d5fd6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,14 @@ +## 3.3.0 + +- Fixed localization bug for the overlay variant of the datetimepicker +- Added option to modify padding around the month name in the calendar of the datetimepicker + ## 3.2.0 + - Added call back for whenever the user navigates to a different month ## 3.1.0 + - Add compatibility with flutter 3.10 ## 3.0.0 diff --git a/example/pubspec.lock b/example/pubspec.lock index f2fcc37..8fe0e44 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.17.2" cupertino_icons: dependency: "direct main" description: @@ -68,15 +68,15 @@ packages: path: ".." relative: true source: path - version: "3.2.0" + version: "3.3.0" flutter_lints: dependency: "direct dev" description: name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.2" flutter_localizations: dependency: "direct main" description: flutter @@ -91,42 +91,34 @@ packages: dependency: "direct main" description: name: intl - sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" url: "https://pub.dev" source: hosted - version: "0.18.0" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" + version: "0.18.1" lints: dependency: transitive description: name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.1.1" matcher: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: @@ -152,10 +144,10 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: @@ -192,10 +184,10 @@ packages: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.6.0" vector_math: dependency: transitive description: @@ -204,6 +196,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" sdks: - dart: ">=3.0.0-0 <4.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=2.0.0" diff --git a/lib/src/drag_down_date_time_picker.dart b/lib/src/drag_down_date_time_picker.dart index ddab273..4b74782 100644 --- a/lib/src/drag_down_date_time_picker.dart +++ b/lib/src/drag_down_date_time_picker.dart @@ -174,6 +174,8 @@ class _DragDownDateTimePickerState extends State { _dateTimePickerController, monthDateBoxSize: widget .dateTimePickerTheme.monthDateBoxSize, + monthDatePadding: widget + .dateTimePickerTheme.monthDatePadding, ), ), ), diff --git a/lib/src/models/date_time_picker_theme.dart b/lib/src/models/date_time_picker_theme.dart index 88799d3..b66b7c5 100644 --- a/lib/src/models/date_time_picker_theme.dart +++ b/lib/src/models/date_time_picker_theme.dart @@ -41,6 +41,7 @@ class DateTimePickerTheme { this.barTheme = const DateTimePickerBarTheme(), this.monthWeekDayHeaders = false, this.calenderPadding = const EdgeInsets.all(8.0), + this.monthDatePadding = const EdgeInsets.symmetric(vertical: 12.0), }); /// enum to define a shape dor the date. use [DateBoxShape.circle]. @@ -68,6 +69,9 @@ class DateTimePickerTheme { /// Size of date box in a month view. final double monthDateBoxSize; + /// The Padding around the month name in the month view. + final EdgeInsetsGeometry monthDatePadding; + /// The color used for a indicator for a marked date. final Color? markedIndicatorColor; diff --git a/lib/src/overlay_date_time_picker.dart b/lib/src/overlay_date_time_picker.dart index 915f5db..a8c5f39 100644 --- a/lib/src/overlay_date_time_picker.dart +++ b/lib/src/overlay_date_time_picker.dart @@ -7,6 +7,7 @@ import 'package:flutter_date_time_picker/src/models/date_time_picker_theme.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'; +import 'package:intl/date_symbol_data_local.dart'; class OverlayDateTimePicker extends StatefulWidget { const OverlayDateTimePicker({ @@ -104,27 +105,32 @@ class _OverlayDateTimePickerState extends State { ); late bool _isShown = widget.isShown; + late final DateTimePickerController _dateTimePickerController; _DropdownRoute? _dropdownRoute; - late final DateTimePickerController _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(), - ); + @override + void initState() { + 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(), + ); + } @override void dispose() { diff --git a/lib/src/widgets/month_date_time_picker/month_date_time_picker_sheet.dart b/lib/src/widgets/month_date_time_picker/month_date_time_picker_sheet.dart index 878c314..2ce3261 100644 --- a/lib/src/widgets/month_date_time_picker/month_date_time_picker_sheet.dart +++ b/lib/src/widgets/month_date_time_picker/month_date_time_picker_sheet.dart @@ -12,39 +12,41 @@ class MonthDateTimePickerSheet extends StatelessWidget { const MonthDateTimePickerSheet({ required this.dateTimePickerController, required this.monthDateBoxSize, - Key? key, - }) : super(key: key); + required this.monthDatePadding, + super.key, + }); final DateTimePickerController dateTimePickerController; final double monthDateBoxSize; + final EdgeInsetsGeometry monthDatePadding; @override Widget build(BuildContext context) { var theme = dateTimePickerController.theme; + var size = MediaQuery.of(context).size; return Column( children: [ - if (dateTimePickerController.header != null) + if (dateTimePickerController.header != null) ...[ Align( alignment: Alignment.topCenter, child: dateTimePickerController.header!, ), - const SizedBox( - height: 10, - ), - Text( - // use localization to get the month name - DateFormat.yMMMM(Localizations.localeOf(context).toString()).format( - dateTimePickerController.browsingDate, + ], + Padding( + padding: monthDatePadding, + child: Text( + // use localization to get the month name + DateFormat.yMMMM(Localizations.localeOf(context).toString()).format( + dateTimePickerController.browsingDate, + ), + style: theme.baseTheme.textStyle!.copyWith(fontSize: 25), ), - style: theme.baseTheme.textStyle!.copyWith(fontSize: 25), ), SizedBox( - width: MediaQuery.of(context).size.width, - height: MediaQuery.of(context).size.height * 0.33 + - ((theme.monthWeekDayHeaders) - ? MediaQuery.of(context).size.height * 0.04 - : 0), + width: size.width, + height: size.height * 0.33 + + ((theme.monthWeekDayHeaders) ? size.height * 0.04 : 0), child: PageView( controller: dateTimePickerController.pageController, onPageChanged: (i) { diff --git a/lib/src/widgets/overlay_date_time_picker/date_picker.dart b/lib/src/widgets/overlay_date_time_picker/date_picker.dart index 114a8c1..d020819 100644 --- a/lib/src/widgets/overlay_date_time_picker/date_picker.dart +++ b/lib/src/widgets/overlay_date_time_picker/date_picker.dart @@ -53,7 +53,8 @@ class DatePicker extends StatelessWidget { padding: const EdgeInsets.only(top: 8), child: Row( children: List.generate(DateTime.daysPerWeek, (index) { - DateFormat dateFormatter = DateFormat("EE"); + DateFormat dateFormatter = DateFormat( + "EE", Localizations.localeOf(context).toLanguageTag()); var date = dateFormatter.format(DateTime(2022, 11, index)); if (theme.dateFormatWeekday != null) { date = theme.dateFormatWeekday! diff --git a/lib/src/widgets/overlay_date_time_picker/overlay.dart b/lib/src/widgets/overlay_date_time_picker/overlay.dart index c8f75fe..dda1a62 100644 --- a/lib/src/widgets/overlay_date_time_picker/overlay.dart +++ b/lib/src/widgets/overlay_date_time_picker/overlay.dart @@ -71,7 +71,9 @@ class _OverlayDateTimeContentState extends State { @override Widget build(BuildContext context) { - var monthText = DateFormat.yMMMM().format( + var monthText = + DateFormat.yMMMM(Localizations.localeOf(context).toLanguageTag()) + .format( widget.controller.browsingDate, ); if (widget.theme.dateFormatMonth != null) { diff --git a/pubspec.yaml b/pubspec.yaml index 1fb0677..6f3a29c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,16 +1,15 @@ name: flutter_date_time_picker description: A Flutter package for date and time picker. -version: 3.2.0 -homepage: https://iconica.nl/ +version: 3.3.0 environment: - sdk: ">=2.17.6 <3.0.0" + sdk: ">=3.0.0 <4.0.0" flutter: ">=2.0.0" dependencies: flutter: sdk: flutter - intl: ^0.18.0 + intl: any dev_dependencies: flutter_test: