parseDescriptionRuns function

(String, List<TextRun>) parseDescriptionRuns(
  1. dynamic descriptionRunsList
)

Parses a descriptionRuns section

Implementation

(String, List<TextRun>) parseDescriptionRuns(dynamic descriptionRunsList) {
  if (descriptionRunsList is! List) {
    return ('', []);
  }

  final descriptionRuns = List<TextRun>.empty(growable: true);
  final description = StringBuffer();

  for (final run in List<Map<String, dynamic>>.from(descriptionRunsList)) {
    {
      description.write(run['text']);
      // hashtag runs carry a searchEndpoint instead of an urlEndpoint - treat them as plain text
      final link = nav(run, [
        'navigationEndpoint',
        'urlEndpoint',
        'url',
      ], nullIfAbsent: true);
      if (link != null) {
        descriptionRuns.add(
          HyperLink(text: run['text'] as String, url: link as String),
        );
      } else {
        descriptionRuns.add(PlainText(text: run['text'] as String));
      }
    }
  }
  return (description.toString(), descriptionRuns);
}