From d8691d36aada176ee6f76082d3f4dd9cec4d4b7f Mon Sep 17 00:00:00 2001 From: Joons Date: Thu, 13 Oct 2022 15:21:19 +0200 Subject: [PATCH] add initial date params --- example/lib/example_pages/date_page.dart | 8 +++++- .../input_date_picker/date_picker.dart | 25 +++++++++++++++---- .../input_date_picker/input_date_picker.dart | 10 ++++++++ 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/example/lib/example_pages/date_page.dart b/example/lib/example_pages/date_page.dart index 169e946..37ffacf 100644 --- a/example/lib/example_pages/date_page.dart +++ b/example/lib/example_pages/date_page.dart @@ -31,9 +31,15 @@ class _DatePageState extends State { Padding( padding: const EdgeInsets.fromLTRB(40, 0, 40, 40), child: FlutterFormInputDateTime( - inputType: FlutterFormDateTimeType.dateTime, + inputType: FlutterFormDateTimeType.range, dateFormat: DateFormat.yMd(), firstDate: DateTime.now(), + initialDateTimeRange: DateTimeRange( + start: DateTime.now(), + end: DateTime.now().add( + const Duration(days: 7), + ), + ), label: const Text("Date"), controller: widget.dateController, ), diff --git a/lib/src/widgets/input/input_types/input_date_picker/date_picker.dart b/lib/src/widgets/input/input_types/input_date_picker/date_picker.dart index f651353..e308ea3 100644 --- a/lib/src/widgets/input/input_types/input_date_picker/date_picker.dart +++ b/lib/src/widgets/input/input_types/input_date_picker/date_picker.dart @@ -19,6 +19,8 @@ class DateTimeInputField extends ConsumerStatefulWidget { required this.dateFormat, required this.firstDate, required this.lastDate, + this.initialDate, + this.initialDateTimeRange, }) : super( key: key, ); @@ -28,6 +30,8 @@ class DateTimeInputField extends ConsumerStatefulWidget { final bool showIcon; final DateTime? firstDate; final DateTime? lastDate; + final DateTime? initialDate; + final DateTimeRange? initialDateTimeRange; final IconData icon; final Widget? label; @override @@ -37,6 +41,8 @@ class DateTimeInputField extends ConsumerStatefulWidget { class _DateInputFieldState extends ConsumerState { late final DateTime firstDate; late final DateTime lastDate; + late final DateTime initialDate; + late final DateTimeRange initialDateRange; @override void initState() { @@ -48,6 +54,14 @@ class _DateInputFieldState extends ConsumerState { DateTime.now().add( const Duration(days: 1000), ); + initialDate = widget.initialDate ?? DateTime.now(); + initialDateRange = widget.initialDateTimeRange ?? + DateTimeRange( + start: DateTime.now(), + end: DateTime.now().add( + const Duration(days: 7), + ), + ); super.initState(); } @@ -62,8 +76,8 @@ class _DateInputFieldState extends ConsumerState { switch (inputType) { case FlutterFormDateTimeType.date: DateTime? unformatted = await showDatePicker( + initialDate: initialDate, context: context, - initialDate: DateTime.now(), firstDate: firstDate, lastDate: lastDate, ); @@ -85,10 +99,11 @@ class _DateInputFieldState extends ConsumerState { break; case FlutterFormDateTimeType.range: userInput = (await showDateRangePicker( - context: context, - firstDate: firstDate, - lastDate: lastDate, - ).then((value) { + context: context, + firstDate: firstDate, + lastDate: lastDate, + initialDateRange: initialDateRange) + .then((value) { return value != null ? '${widget.dateFormat.format(value.start)} - ${widget.dateFormat.format(value.end)}' : ''; diff --git a/lib/src/widgets/input/input_types/input_date_picker/input_date_picker.dart b/lib/src/widgets/input/input_types/input_date_picker/input_date_picker.dart index 304651a..c29d74c 100644 --- a/lib/src/widgets/input/input_types/input_date_picker/input_date_picker.dart +++ b/lib/src/widgets/input/input_types/input_date_picker/input_date_picker.dart @@ -27,6 +27,8 @@ class FlutterFormInputDateTime extends FlutterFormInputWidget { required this.dateFormat, this.firstDate, this.lastDate, + this.initialDate, + this.initialDateTimeRange, this.icon = Icons.calendar_today, }) : super( key: key, @@ -36,6 +38,8 @@ class FlutterFormInputDateTime extends FlutterFormInputWidget { final bool showIcon; final FlutterFormDateTimeType inputType; final DateFormat dateFormat; + final DateTime? initialDate; + final DateTimeRange? initialDateTimeRange; final DateTime? firstDate; final DateTime? lastDate; final IconData icon; @@ -52,6 +56,8 @@ class FlutterFormInputDateTime extends FlutterFormInputWidget { inputType: inputType, controller: controller, dateFormat: dateFormat, + initialDate: initialDate, + initialDateTimeRange: initialDateTimeRange, ); } } @@ -67,11 +73,15 @@ class FlutterFormInputDateTimeController this.value, this.checkPageTitle, this.checkPageDescription, + this.initialDate, + this.initialDateTimeRange, required this.dateTimeType, required this.dateFormat, this.onChanged, }); + final DateTime? initialDate; + final DateTimeRange? initialDateTimeRange; final DateFormat dateFormat; final FlutterFormDateTimeType dateTimeType;