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