withSpinner<T> function
Future<T>
withSpinner<T>({
- required String label,
- required Future<
T> task(), - String? successLabel,
- String? failLabel,
- SpinnerStyle style = SpinnerStyle.braille,
Convenience: wrap an async task in a spinner automatically.
final result = await withSpinner(
label: 'Grouping dependencies via FlutterGems',
task: () => serverApi.groupPackages(packages),
);
Implementation
Future<T> withSpinner<T>({
required String label,
required Future<T> Function() task,
String? successLabel,
String? failLabel,
SpinnerStyle style = SpinnerStyle.braille,
}) async {
final spinner = Spinner(label: label, style: style);
spinner.start();
try {
final result = await task();
spinner.success(successLabel);
return result;
} catch (e) {
spinner.fail(failLabel ?? 'Failed: $e');
rethrow;
}
}