dateRangePickerBuilder function

Widget dateRangePickerBuilder(
  1. FormFieldState<DateTimeRange> field
)

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),
        ],
      ),
    ),
  );
}