add initial date params

This commit is contained in:
Joons 2022-10-13 15:21:19 +02:00
parent 96158b9e36
commit d8691d36aa
3 changed files with 37 additions and 6 deletions

View file

@ -31,9 +31,15 @@ class _DatePageState extends State<DatePage> {
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,
),

View file

@ -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<DateTimeInputField> {
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<DateTimeInputField> {
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<DateTimeInputField> {
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<DateTimeInputField> {
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)}'
: '';

View file

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