mirror of
https://github.com/Iconica-Development/flutter_date_time_picker.git
synced 2025-05-18 18:33:49 +02:00
feat: add more spacing and fix localization
This commit is contained in:
parent
5c60109348
commit
5b08667ec9
9 changed files with 89 additions and 66 deletions
|
@ -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
|
## 3.2.0
|
||||||
|
|
||||||
- Added call back for whenever the user navigates to a different month
|
- Added call back for whenever the user navigates to a different month
|
||||||
|
|
||||||
## 3.1.0
|
## 3.1.0
|
||||||
|
|
||||||
- Add compatibility with flutter 3.10
|
- Add compatibility with flutter 3.10
|
||||||
|
|
||||||
## 3.0.0
|
## 3.0.0
|
||||||
|
|
|
@ -37,10 +37,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
|
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.17.1"
|
version: "1.17.2"
|
||||||
cupertino_icons:
|
cupertino_icons:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -68,15 +68,15 @@ packages:
|
||||||
path: ".."
|
path: ".."
|
||||||
relative: true
|
relative: true
|
||||||
source: path
|
source: path
|
||||||
version: "3.2.0"
|
version: "3.3.0"
|
||||||
flutter_lints:
|
flutter_lints:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: flutter_lints
|
name: flutter_lints
|
||||||
sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c
|
sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.1"
|
version: "2.0.2"
|
||||||
flutter_localizations:
|
flutter_localizations:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -91,42 +91,34 @@ packages:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6
|
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.18.0"
|
version: "0.18.1"
|
||||||
js:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: js
|
|
||||||
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.6.7"
|
|
||||||
lints:
|
lints:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: lints
|
name: lints
|
||||||
sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593"
|
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.1"
|
version: "2.1.1"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
|
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.15"
|
version: "0.12.16"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
|
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.0"
|
version: "0.5.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -152,10 +144,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: source_span
|
name: source_span
|
||||||
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
|
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.9.1"
|
version: "1.10.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -192,10 +184,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
|
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.1"
|
version: "0.6.0"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -204,6 +196,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.4"
|
||||||
|
web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: web
|
||||||
|
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.1.4-beta"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.0.0-0 <4.0.0"
|
dart: ">=3.1.0-185.0.dev <4.0.0"
|
||||||
flutter: ">=2.0.0"
|
flutter: ">=2.0.0"
|
||||||
|
|
|
@ -174,6 +174,8 @@ class _DragDownDateTimePickerState extends State<DragDownDateTimePicker> {
|
||||||
_dateTimePickerController,
|
_dateTimePickerController,
|
||||||
monthDateBoxSize: widget
|
monthDateBoxSize: widget
|
||||||
.dateTimePickerTheme.monthDateBoxSize,
|
.dateTimePickerTheme.monthDateBoxSize,
|
||||||
|
monthDatePadding: widget
|
||||||
|
.dateTimePickerTheme.monthDatePadding,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -41,6 +41,7 @@ class DateTimePickerTheme {
|
||||||
this.barTheme = const DateTimePickerBarTheme(),
|
this.barTheme = const DateTimePickerBarTheme(),
|
||||||
this.monthWeekDayHeaders = false,
|
this.monthWeekDayHeaders = false,
|
||||||
this.calenderPadding = const EdgeInsets.all(8.0),
|
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].
|
/// 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.
|
/// Size of date box in a month view.
|
||||||
final double monthDateBoxSize;
|
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.
|
/// The color used for a indicator for a marked date.
|
||||||
final Color? markedIndicatorColor;
|
final Color? markedIndicatorColor;
|
||||||
|
|
||||||
|
|
|
@ -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/utils/date_time_picker_controller.dart';
|
||||||
import 'package:flutter_date_time_picker/src/models/date_constraint.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:flutter_date_time_picker/src/widgets/overlay_date_time_picker/overlay.dart';
|
||||||
|
import 'package:intl/date_symbol_data_local.dart';
|
||||||
|
|
||||||
class OverlayDateTimePicker extends StatefulWidget {
|
class OverlayDateTimePicker extends StatefulWidget {
|
||||||
const OverlayDateTimePicker({
|
const OverlayDateTimePicker({
|
||||||
|
@ -104,27 +105,32 @@ class _OverlayDateTimePickerState extends State<OverlayDateTimePicker> {
|
||||||
);
|
);
|
||||||
|
|
||||||
late bool _isShown = widget.isShown;
|
late bool _isShown = widget.isShown;
|
||||||
|
late final DateTimePickerController _dateTimePickerController;
|
||||||
|
|
||||||
_DropdownRoute? _dropdownRoute;
|
_DropdownRoute? _dropdownRoute;
|
||||||
|
|
||||||
late final DateTimePickerController _dateTimePickerController =
|
@override
|
||||||
DateTimePickerController(
|
void initState() {
|
||||||
highlightToday: widget.highlightToday,
|
super.initState();
|
||||||
alwaysUse24HourFormat: widget.alwaysUse24HourFormat,
|
initializeDateFormatting();
|
||||||
pickTime: widget.pickTime,
|
_dateTimePickerController = DateTimePickerController(
|
||||||
theme: widget.theme,
|
highlightToday: widget.highlightToday,
|
||||||
markedDates: widget.markedDates,
|
alwaysUse24HourFormat: widget.alwaysUse24HourFormat,
|
||||||
disabledDates: widget.disabledDates,
|
pickTime: widget.pickTime,
|
||||||
disabledTimes: widget.disabledTimes,
|
theme: widget.theme,
|
||||||
onTapDayCallBack: (date) {
|
markedDates: widget.markedDates,
|
||||||
widget.onTapDay?.call(date);
|
disabledDates: widget.disabledDates,
|
||||||
if (widget.closeOnSelectDate) {
|
disabledTimes: widget.disabledTimes,
|
||||||
Navigator.of(context).pop();
|
onTapDayCallBack: (date) {
|
||||||
}
|
widget.onTapDay?.call(date);
|
||||||
},
|
if (widget.closeOnSelectDate) {
|
||||||
browsingDate: widget.initialDate ?? DateTime.now(),
|
Navigator.of(context).pop();
|
||||||
selectedDate: widget.initialDate ?? DateTime.now(),
|
}
|
||||||
);
|
},
|
||||||
|
browsingDate: widget.initialDate ?? DateTime.now(),
|
||||||
|
selectedDate: widget.initialDate ?? DateTime.now(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
|
|
|
@ -12,39 +12,41 @@ class MonthDateTimePickerSheet extends StatelessWidget {
|
||||||
const MonthDateTimePickerSheet({
|
const MonthDateTimePickerSheet({
|
||||||
required this.dateTimePickerController,
|
required this.dateTimePickerController,
|
||||||
required this.monthDateBoxSize,
|
required this.monthDateBoxSize,
|
||||||
Key? key,
|
required this.monthDatePadding,
|
||||||
}) : super(key: key);
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
final DateTimePickerController dateTimePickerController;
|
final DateTimePickerController dateTimePickerController;
|
||||||
final double monthDateBoxSize;
|
final double monthDateBoxSize;
|
||||||
|
final EdgeInsetsGeometry monthDatePadding;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var theme = dateTimePickerController.theme;
|
var theme = dateTimePickerController.theme;
|
||||||
|
var size = MediaQuery.of(context).size;
|
||||||
|
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
if (dateTimePickerController.header != null)
|
if (dateTimePickerController.header != null) ...[
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.topCenter,
|
alignment: Alignment.topCenter,
|
||||||
child: dateTimePickerController.header!,
|
child: dateTimePickerController.header!,
|
||||||
),
|
),
|
||||||
const SizedBox(
|
],
|
||||||
height: 10,
|
Padding(
|
||||||
),
|
padding: monthDatePadding,
|
||||||
Text(
|
child: Text(
|
||||||
// use localization to get the month name
|
// use localization to get the month name
|
||||||
DateFormat.yMMMM(Localizations.localeOf(context).toString()).format(
|
DateFormat.yMMMM(Localizations.localeOf(context).toString()).format(
|
||||||
dateTimePickerController.browsingDate,
|
dateTimePickerController.browsingDate,
|
||||||
|
),
|
||||||
|
style: theme.baseTheme.textStyle!.copyWith(fontSize: 25),
|
||||||
),
|
),
|
||||||
style: theme.baseTheme.textStyle!.copyWith(fontSize: 25),
|
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: MediaQuery.of(context).size.width,
|
width: size.width,
|
||||||
height: MediaQuery.of(context).size.height * 0.33 +
|
height: size.height * 0.33 +
|
||||||
((theme.monthWeekDayHeaders)
|
((theme.monthWeekDayHeaders) ? size.height * 0.04 : 0),
|
||||||
? MediaQuery.of(context).size.height * 0.04
|
|
||||||
: 0),
|
|
||||||
child: PageView(
|
child: PageView(
|
||||||
controller: dateTimePickerController.pageController,
|
controller: dateTimePickerController.pageController,
|
||||||
onPageChanged: (i) {
|
onPageChanged: (i) {
|
||||||
|
|
|
@ -53,7 +53,8 @@ class DatePicker extends StatelessWidget {
|
||||||
padding: const EdgeInsets.only(top: 8),
|
padding: const EdgeInsets.only(top: 8),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: List.generate(DateTime.daysPerWeek, (index) {
|
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));
|
var date = dateFormatter.format(DateTime(2022, 11, index));
|
||||||
if (theme.dateFormatWeekday != null) {
|
if (theme.dateFormatWeekday != null) {
|
||||||
date = theme.dateFormatWeekday!
|
date = theme.dateFormatWeekday!
|
||||||
|
|
|
@ -71,7 +71,9 @@ class _OverlayDateTimeContentState extends State<OverlayDateTimeContent> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var monthText = DateFormat.yMMMM().format(
|
var monthText =
|
||||||
|
DateFormat.yMMMM(Localizations.localeOf(context).toLanguageTag())
|
||||||
|
.format(
|
||||||
widget.controller.browsingDate,
|
widget.controller.browsingDate,
|
||||||
);
|
);
|
||||||
if (widget.theme.dateFormatMonth != null) {
|
if (widget.theme.dateFormatMonth != null) {
|
||||||
|
|
|
@ -1,16 +1,15 @@
|
||||||
name: flutter_date_time_picker
|
name: flutter_date_time_picker
|
||||||
description: A Flutter package for date and time picker.
|
description: A Flutter package for date and time picker.
|
||||||
version: 3.2.0
|
version: 3.3.0
|
||||||
homepage: https://iconica.nl/
|
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.17.6 <3.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
flutter: ">=2.0.0"
|
flutter: ">=2.0.0"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
intl: ^0.18.0
|
intl: any
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|
Loading…
Reference in a new issue