render method
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;
// Not using for each to allow for new adapters to be added during iteration.
for (var i = 0; i < _adapters.length; i++) {
final r = _adapters[i].prepare();
if (r is Future) {
await r;
}
}
for (final adapter in _adapters.reversed) {
adapter.apply(root);
}
final document = standalone ? null : createDocumentStructure(root, true);
if (_responseBodyOverride case final override?) {
return override;
}
if (document != null && request.headers.singleValues['X-Jaspr-Reload'] == 'true') {
return utf8.encode(document.body.renderToHtml());
}
return utf8.encode(root.renderToHtml());
}