feat: add more spacing and fix localization

This commit is contained in:
Freek van de Ven 2023-08-17 13:41:30 +02:00
parent 5c60109348
commit 5b08667ec9
9 changed files with 89 additions and 66 deletions

View file

@ -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

View file

@ -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"

View file

@ -174,6 +174,8 @@ class _DragDownDateTimePickerState extends State<DragDownDateTimePicker> {
_dateTimePickerController,
monthDateBoxSize: widget
.dateTimePickerTheme.monthDateBoxSize,
monthDatePadding: widget
.dateTimePickerTheme.monthDatePadding,
),
),
),

View file

@ -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;

View file

@ -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<OverlayDateTimePicker> {
);
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() {

View file

@ -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) {

View file

@ -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!

View file

@ -71,7 +71,9 @@ class _OverlayDateTimeContentState extends State<OverlayDateTimeContent> {
@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) {

View file

@ -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: