localeFromLanguageTag function
pt-BR → Locale('pt', 'BR'), zh-Hans → a script subtag.
Implementation
Locale localeFromLanguageTag(String tag) {
final List<String> parts = tag.split(RegExp('[-_]'));
if (parts.length == 1) return Locale(parts.first);
if (parts.length == 2) {
// A four-letter subtag is a script, not a region.
return parts[1].length == 4
? Locale.fromSubtags(languageCode: parts[0], scriptCode: parts[1])
: Locale(parts[0], parts[1]);
}
return Locale.fromSubtags(
languageCode: parts[0],
scriptCode: parts[1].length == 4 ? parts[1] : null,
countryCode: parts.last,
);
}