showAnimatedTimePicker function

Future<TimeOfDay?> showAnimatedTimePicker({
  1. required BuildContext context,
  2. required TimeOfDay initialTime,
  3. TimePickerEntryMode initialEntryMode = TimePickerEntryMode.dial,
  4. String? cancelText,
  5. String? confirmText,
  6. String? helpText,
  7. String? errorInvalidText,
  8. String? hourLabelText,
  9. String? minuteLabelText,
  10. EntryModeChangeCallback? onEntryModeChanged,
  11. bool useRootNavigator = true,
  12. RouteSettings? routeSettings,
  13. Offset? anchorPoint,
})

Show TimeOfDay picker with easeInOutBack curve animation.

Implementation

Future<TimeOfDay?> showAnimatedTimePicker({
  required BuildContext context,
  required TimeOfDay initialTime,
  TimePickerEntryMode initialEntryMode = TimePickerEntryMode.dial,
  String? cancelText,
  String? confirmText,
  String? helpText,
  String? errorInvalidText,
  String? hourLabelText,
  String? minuteLabelText,
  EntryModeChangeCallback? onEntryModeChanged,
  bool useRootNavigator = true,
  RouteSettings? routeSettings,
  Offset? anchorPoint,
}) async {
  assert(debugCheckHasMaterialLocalizations(context));

  final Widget dialog = TimePickerDialog(
    initialTime: initialTime,
    initialEntryMode: initialEntryMode,
    cancelText: cancelText,
    confirmText: confirmText,
    helpText: helpText,
    errorInvalidText: errorInvalidText,
    hourLabelText: hourLabelText,
    minuteLabelText: minuteLabelText,
    onEntryModeChanged: onEntryModeChanged,
  );

  return showGeneralDialog<TimeOfDay?>(
    context: context,
    pageBuilder: (context, a1, a2) => dialog,
    useRootNavigator: useRootNavigator,
    routeSettings: routeSettings,
    anchorPoint: anchorPoint,
    transitionDuration: const Duration(milliseconds: 500),
    transitionBuilder: (conext, anim1, anim2, child) {
      final curveValue = Curves.easeInOutBack.transform(anim1.value) - 1.0;
      return Transform(
        transform: Matrix4.translationValues(0.0, curveValue * 200, 0.0),
        child: Opacity(
          opacity: anim1.value,
          child: dialog,
        ),
      );
    },
  );
}