fix: initial time is optional

This commit is contained in:
Kafune 2023-08-10 11:26:38 +02:00
parent 960b8ecc3c
commit 3084d6c5f0
4 changed files with 25 additions and 17 deletions

View file

@ -31,3 +31,6 @@
## 2.2.0 ## 2.2.0
* Dateformat optional on input from the user, defaulting to 24 hour format * Dateformat optional on input from the user, defaulting to 24 hour format
## 2.2.1
* Initial time optional on input from the user, defaulting to current time

View file

@ -68,7 +68,7 @@ packages:
path: ".." path: ".."
relative: true relative: true
source: path source: path
version: "2.2.0" version: "2.2.1"
flutter_lints: flutter_lints:
dependency: "direct dev" dependency: "direct dev"
description: description:

View file

@ -21,6 +21,7 @@ class DateTimeInputField extends StatefulWidget {
required this.firstDate, required this.firstDate,
required this.lastDate, required this.lastDate,
this.initialDate, this.initialDate,
this.initialTime,
this.initialDateTimeRange, this.initialDateTimeRange,
this.initialValue, this.initialValue,
this.onChanged, this.onChanged,
@ -40,6 +41,7 @@ class DateTimeInputField extends StatefulWidget {
final DateTime? firstDate; final DateTime? firstDate;
final DateTime? lastDate; final DateTime? lastDate;
final DateTime? initialDate; final DateTime? initialDate;
final TimeOfDay? initialTime;
final DateTimeRange? initialDateTimeRange; final DateTimeRange? initialDateTimeRange;
final IconData? icon; final IconData? icon;
final Widget? label; final Widget? label;
@ -58,6 +60,7 @@ class _DateInputFieldState extends State<DateTimeInputField> {
late final DateTime lastDate; late final DateTime lastDate;
late final DateTime initialDate; late final DateTime initialDate;
late final DateTimeRange initialDateRange; late final DateTimeRange initialDateRange;
late final TimeOfDay? initialTime;
String currentValue = ''; String currentValue = '';
@override @override
@ -82,6 +85,8 @@ class _DateInputFieldState extends State<DateTimeInputField> {
super.initState(); super.initState();
} }
TimeOfDay get initialTimeOfDay => widget.initialTime ?? TimeOfDay.now();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Future<String> getInputFromUser(FlutterFormDateTimeType inputType, Future<String> getInputFromUser(FlutterFormDateTimeType inputType,
@ -137,20 +142,20 @@ class _DateInputFieldState extends State<DateTimeInputField> {
break; break;
case FlutterFormDateTimeType.time: case FlutterFormDateTimeType.time:
userInput = await showTimePicker( userInput = await showTimePicker(
initialEntryMode: widget.timePickerEntryMode, initialEntryMode: widget.timePickerEntryMode,
builder: (BuildContext context, Widget? child) { builder: (BuildContext context, Widget? child) {
return MediaQuery( return MediaQuery(
data: MediaQuery.of(context) data: MediaQuery.of(context)
.copyWith(alwaysUse24HourFormat: true), .copyWith(alwaysUse24HourFormat: true),
child: child!, child: child!,
); );
}, },
context: context, context: context,
initialTime: TimeOfDay.now()) initialTime: initialTimeOfDay,
.then((value) => value == null ).then((value) => value == null
? '' ? ''
: MaterialLocalizations.of(context) : MaterialLocalizations.of(context)
.formatTimeOfDay(value, alwaysUse24HourFormat: true)); .formatTimeOfDay(value, alwaysUse24HourFormat: true));
} }
return userInput; return userInput;
} }

View file

@ -1,6 +1,6 @@
name: flutter_input_library name: flutter_input_library
description: A new Flutter package project. description: A new Flutter package project.
version: 2.2.0 version: 2.2.1
repository: https://github.com/Iconica-Development/flutter_input_library repository: https://github.com/Iconica-Development/flutter_input_library
environment: environment: