runTaskSession<T> method

Future<T> runTaskSession<T>(
  1. Future<T> run(
    1. Terminal terminal,
    2. TerminiceFallbackMode directFallbackMode
    ), {
  2. required String plainStart,
})
inherited

Adds the one start line required by task-like indicator sugar while the existing task renderer remains responsible for its single final line.

Implementation

Future<T> runTaskSession<T>(
  Future<T> Function(
    Terminal terminal,
    TerminiceFallbackMode directFallbackMode,
  ) run, {
  required String plainStart,
}) async {
  final usesPlainOutput = _usesPlainOutput;
  final directFallbackMode = usesPlainOutput
      ? TerminiceFallbackMode.fallback
      : TerminiceFallbackMode.interactive;
  if (!usesPlainOutput) {
    // A task helper uses its own renderer. Clear any manually rendered frame
    // before handing off so its RenderOutput is never abandoned on screen.
    _withTerminal(_clearRich);
    try {
      return await run(_terminal!, directFallbackMode);
    } finally {
      _resetLifecycleState();
    }
  }

  _showPlain(plainStart);
  try {
    return await run(_terminal!, directFallbackMode);
  } finally {
    _resetLifecycleState();
  }
}