setHyperlink method
Implementation
@override
void setHyperlink(String params, String uri) {
String? explicitId;
for (final param in params.split(':')) {
if (!param.startsWith('id=')) continue;
final id = param.substring(3);
if (id.isNotEmpty) explicitId = id;
break;
}
if (uri.isEmpty) {
if (explicitId != null) return;
_cursorStyle.hyperlinkId = 0;
return;
}
final key = explicitId == null ? null : '$explicitId\x00$uri';
final existingId = key == null ? null : _explicitHyperlinkIds[key];
if (existingId != null) {
_cursorStyle.hyperlinkId = existingId;
return;
}
if (_hyperlinks.length >= _maxHyperlinks) {
_pruneUnusedHyperlinks();
if (_hyperlinks.length >= _maxHyperlinks) {
_cursorStyle.hyperlinkId = 0;
return;
}
}
final hyperlinkId = _allocateHyperlinkId();
if (hyperlinkId == null) {
_cursorStyle.hyperlinkId = 0;
return;
}
_hyperlinks[hyperlinkId] = uri;
if (key != null) _explicitHyperlinkIds[key] = hyperlinkId;
_cursorStyle.hyperlinkId = hyperlinkId;
}