dateRangePickerBuilder function
A FormFieldBuilder that is the default FastDateRangePicker.builder.
Returns an InkWell that shows a Material Design date range picker when tapped. Also contains a Text widget that presents the current FastDateRangePickerState.value and an IconButton that shows the date range picker as well when pressed.
Implementation
Widget dateRangePickerBuilder(FormFieldState<DateTimeRange> field) {
final FastDateRangePickerState(
:context,
:decoration,
:didChange,
:enabled,
:value,
:widget
) = field as FastDateRangePickerState;
Future<DateTimeRange?> show(DatePickerEntryMode entryMode) {
return showDateRangePicker(
anchorPoint: widget.anchorPoint,
barrierColor: widget.barrierColor,
barrierDismissible: widget.barrierDismissible,
barrierLabel: widget.barrierLabel,
builder: widget.dialogBuilder,
cancelText: widget.cancelText,
confirmText: widget.confirmText,
context: context,
currentDate: widget.currentDate,
errorFormatText: widget.errorFormatText,
errorInvalidRangeText: widget.errorInvalidRangeText,
errorInvalidText: widget.errorInvalidText,
fieldEndHintText: widget.fieldEndHintText,
fieldEndLabelText: widget.fieldEndLabelText,
fieldStartHintText: widget.fieldStartHintText,
fieldStartLabelText: widget.fieldStartLabelText,
firstDate: widget.firstDate,
helpText: widget.helpText,
initialEntryMode: entryMode,
initialDateRange: value,
keyboardType: widget.keyboardType,
lastDate: widget.lastDate,
locale: widget.locale,
routeSettings: widget.routeSettings,
saveText: widget.saveText,
switchToCalendarEntryModeIcon: widget.switchToCalendarEntryModeIcon,
switchToInputEntryModeIcon: widget.switchToInputEntryModeIcon,
textDirection: widget.textDirection,
useRootNavigator: widget.useRootNavigator,
).then((value) {
if (value != null) didChange(value);
return value;
});
}
return InkWell(
onTap: enabled ? () => show(DatePickerEntryMode.input) : null,
child: InputDecorator(
decoration: decoration,
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Expanded(
child: widget.textBuilder(field),
),
widget.iconButtonBuilder(field, show),
],
),
),
);
}