render<O extends Object> method

Future<OutputContext> render<O extends Object>({
  1. required Operation<O> operation,
  2. required OutputWidget ui,
})

Runs operation and renders ui.

Exceptions from the operation, or from consuming a stream result while rendering, are captured and rendered through the error branch of ui.

Implementation

Future<OutputContext> render<O extends Object>({
  required Operation<O> operation,
  required OutputWidget ui,
}) async {
  var context = await _doOperation(operation: operation);
  try {
    await ui.buildTree(context).renderTree(logger: logger);
  } on Exception catch (error, stackTrace) {
    if (context.find<QualifiedException>() != null) {
      rethrow;
    }
    context = OutputContext.exception(format, error, stackTrace);
    await ui.buildTree(context).renderTree(logger: logger);
  }
  return context;
}