renderAsync method

  1. @override
Future renderAsync(
  1. Map<String, dynamic> properties
)
override

Implementation

@override
Future<dynamic> renderAsync(Map<String, dynamic> properties) async {
  await resourceContent!.load();

  var type = resourceContent!.uriMimeType!.subType;
  if (isEmptyString(type)) return null;

  var docContent = await resourceContent!.getContent();
  if (docContent == null) return null;

  var extension = resourceContent!.uriFileExtension!.toLowerCase().trim();

  if (isNotEmptyString(extension)) {
    var language = getLanguageByExtension(extension);

    if (language == 'html') {
      return docContent;
    } else if (language == 'text') {
      return '<pre>\n$docContent\n</pre>';
    } else if (language == 'markdown') {
      var div = markdownToDiv(docContent);
      div.style.overflowWrap = 'break-word';
      return div;
    } else if (language == 'json') {
      var jsonRender = JSONRender.fromJSONAsString(docContent);
      jsonRender.addAllKnownTypeRenders();
      var div = jsonRender.render();
      div.style.overflowWrap = 'break-word';
      return div;
    }
  }

  return docContent;
}