setHyperlink method

  1. @override
void setHyperlink(
  1. String params,
  2. String uri
)
override

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;
}