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

View file

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

View file

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

View file

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

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/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,11 +105,15 @@ 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() {
super.initState();
initializeDateFormatting();
_dateTimePickerController = DateTimePickerController(
highlightToday: widget.highlightToday, highlightToday: widget.highlightToday,
alwaysUse24HourFormat: widget.alwaysUse24HourFormat, alwaysUse24HourFormat: widget.alwaysUse24HourFormat,
pickTime: widget.pickTime, pickTime: widget.pickTime,
@ -125,6 +130,7 @@ class _OverlayDateTimePickerState extends State<OverlayDateTimePicker> {
browsingDate: widget.initialDate ?? DateTime.now(), browsingDate: widget.initialDate ?? DateTime.now(),
selectedDate: widget.initialDate ?? DateTime.now(), selectedDate: widget.initialDate ?? DateTime.now(),
); );
}
@override @override
void dispose() { void dispose() {

View file

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

View file

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

View file

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

View file

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