render method

Future<Uint8List> render({
  1. bool standalone = false,
})

Implementation

Future<Uint8List> render({bool standalone = false}) async {
  final rootElement = this.rootElement;
  if (rootElement == null) return _emptyResponse;

  if (rootElement.owner.isFirstBuild) {
    final completer = Completer<void>.sync();
    rootElement.binding.addPostFrameCallback(completer.complete);
    await completer.future;
  }

  final root = rootElement.renderObject as MarkupRenderObject;
  final adapters = [..._adapters.reversed, GlobalStylesAdapter(this), if (!standalone) DocumentAdapter()];

  for (final adapter in adapters.reversed) {
    final r = adapter.prepare();
    if (r is Future) {
      await r;
    }
  }

  for (final adapter in adapters) {
    adapter.apply(root);
  }

  if (_responseBodyOverride case final override?) {
    return override;
  }

  return utf8.encode(root.renderToHtml());
}