parseDescriptionRuns function
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);
}