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