aves/lib/widgets/dialogs/selection_dialogs/common.dart
2023-08-11 23:04:30 +02:00

23 lines
792 B
Dart

import 'package:aves/theme/durations.dart';
import 'package:aves/widgets/dialogs/selection_dialogs/single_selection.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
Future<void> showSelectionDialog<T>({
required BuildContext context,
required WidgetBuilder builder,
required void Function(T value) onSelection,
}) async {
final value = await showDialog<T>(
context: context,
builder: builder,
routeSettings: const RouteSettings(name: AvesSingleSelectionDialog.routeName),
);
// wait for the dialog to hide as applying the change may block the UI
await Future.delayed(ADurations.dialogTransitionAnimation * timeDilation);
if (value != null) {
onSelection(value);
}
}
typedef TextBuilder<T> = String Function(T value);