task<T> method

Future<T> task<T>(
  1. String prompt, {
  2. required FutureOr<T> run(),
  3. String? message,
  4. String? success,
  5. TaskErrorMessage? failure,
  6. TaskErrorMessage? cancel,
  7. TaskCancelPredicate? isCanceled,
  8. Duration interval = const Duration(milliseconds: 80),
  9. SpinnerStyle style = SpinnerStyle.dots,
  10. TaskRunningIndicator indicator = TaskRunningIndicator.spinner,
  11. int maxDots = 3,
  12. TaskDisplay display = TaskDisplay.auto,
  13. TaskFinalBehavior finalBehavior = TaskFinalBehavior.persist,
})

Runs run while rendering task progress and returns its typed result.

Synchronous throws and asynchronous errors both render failure or cancellation status before being rethrown with their original stack trace.

Implementation

Future<T> task<T>(
  String prompt, {
  required FutureOr<T> Function() run,
  String? message,
  String? success,
  TaskErrorMessage? failure,
  TaskErrorMessage? cancel,
  TaskCancelPredicate? isCanceled,
  Duration interval = const Duration(milliseconds: 80),
  SpinnerStyle style = SpinnerStyle.dots,
  TaskRunningIndicator indicator = TaskRunningIndicator.spinner,
  int maxDots = 3,
  TaskDisplay display = TaskDisplay.auto,
  TaskFinalBehavior finalBehavior = TaskFinalBehavior.persist,
}) async {
  final validatedMaxDots = _validateMaxDots(maxDots);
  activate();

  final terminal = TerminalContext.current;
  final renderer = _createTaskRenderer(
    terminice: this,
    terminal: terminal,
    prompt: prompt,
    message: message,
    interval: interval,
    style: style,
    indicator: indicator,
    maxDots: validatedMaxDots,
    display: display,
    finalBehavior: finalBehavior,
  );

  return _runTask<T>(
    prompt: prompt,
    renderer: renderer,
    run: run,
    success: success,
    failure: failure,
    cancel: cancel,
    isCanceled: isCanceled,
  );
}