toDomainName method

String toDomainName(
  1. String str
)

Extract the normalized domain name (host + TLD) from a URL.

Implementation

String toDomainName(String str) {
  // Lowercase and add scheme if missing so Uri can parse
  var input = str.trim().toLowerCase();
  if (!input.contains('://')) {
    input = 'http://$input';
  }

  final host = Uri.tryParse(input)?.host ?? str;
  var domain = host.startsWith('www.') ? host.substring(4) : host;

  final tld = _findTld(domain);
  if (tld != null && domain.endsWith('.$tld')) {
    final base = domain.substring(0, domain.length - (tld.length + 1));
    final parts = base.split('.');
    final core = parts.isNotEmpty ? parts.last : base;
    return '$core.$tld';
  }

  return domain;
}