withSpinner<T> method

Future<T> withSpinner<T>({
  1. required Future<T> task(),
  2. required String message,
  3. String? successMessage,
  4. String? errorMessage,
})

Run a task with a spinner animation

Implementation

Future<T> withSpinner<T>({
  required Future<T> Function() task,
  required String message,
  String? successMessage,
  String? errorMessage,
}) async {
  final spinner = ConsoleSpinner(message);
  spinner.start();

  try {
    final result = await task();
    spinner.stop(
      completionMessage: successMessage ?? '$message completed',
      success: true,
    );
    return result;
  } catch (e) {
    spinner.stop(
      completionMessage: errorMessage ?? 'Failed: $e',
      success: false,
    );
    rethrow;
  }
}