timePickerBuilder function

Widget timePickerBuilder(
  1. FormFieldState<TimeOfDay> field
)

A FormFieldBuilder that is the default FastTimePicker.builder.

Returns an InputDecorator inside an InkWell that contains an IconButton to trigger the Material Design time picker on any TargetPlatform.

Implementation

Widget timePickerBuilder(FormFieldState<TimeOfDay> field) {
  final FastTimePickerState(
    :context,
    :decoration,
    :didChange,
    :enabled,
    :value,
    :widget
  ) = field as FastTimePickerState;

  Future<TimeOfDay?> show(TimePickerEntryMode entryMode) {
    return showTimePicker(
      anchorPoint: widget.anchorPoint,
      barrierColor: widget.barrierColor,
      barrierDismissible: widget.barrierDismissible,
      barrierLabel: widget.barrierLabel,
      builder: widget.dialogBuilder,
      cancelText: widget.cancelText,
      confirmText: widget.confirmText,
      context: context,
      errorInvalidText: widget.errorInvalidText,
      helpText: widget.helpText,
      hourLabelText: widget.hourLabelText,
      initialEntryMode: widget.initialEntryMode,
      initialTime: value ?? TimeOfDay.now(),
      minuteLabelText: widget.minuteLabelText,
      onEntryModeChanged: widget.onEntryModeChanged,
      orientation: widget.orientation,
      routeSettings: widget.routeSettings,
      useRootNavigator: widget.useRootNavigator,
    ).then((value) {
      if (value != null) didChange(value);
      return value;
    });
  }

  return InkWell(
    onTap: enabled ? () => show(widget.initialEntryMode) : null,
    child: InputDecorator(
      decoration: decoration,
      child: Row(
        mainAxisAlignment: MainAxisAlignment.end,
        children: <Widget>[
          Expanded(
            child: widget.textBuilder(field),
          ),
          widget.iconButtonBuilder(field, show),
        ],
      ),
    ),
  );
}