Fix caching of Locale.toString (#9920)

This commit is contained in:
Jason Simmons 2019-07-19 15:57:28 -07:00 committed by GitHub
parent b1276efa77
commit 8d28215c8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -489,22 +489,20 @@ class Locale {
/// underscores as separator, however it is intended to be used for debugging
/// purposes only. For parseable results, use [toLanguageTag] instead.
@override
String toString() => _toLanguageTag('_');
String toString() {
if (!identical(cachedLocale, this)) {
cachedLocale = this;
cachedLocaleString = _rawToString('_');
}
return cachedLocaleString;
}
/// Returns a syntactically valid Unicode BCP47 Locale Identifier.
///
/// Some examples of such identifiers: "en", "es-419", "hi-Deva-IN" and
/// "zh-Hans-CN". See http://www.unicode.org/reports/tr35/ for technical
/// details.
String toLanguageTag() => _toLanguageTag();
String _toLanguageTag([String separator = '-']) {
if (!identical(cachedLocale, this)) {
cachedLocale = this;
cachedLocaleString = _rawToString(separator);
}
return cachedLocaleString;
}
String toLanguageTag() => _rawToString('-');
String _rawToString(String separator) {
final StringBuffer out = StringBuffer(languageCode);