computePlatformResolvedLocale method
Computes the locale the current platform would resolve to.
This method is meant to be used as part of a WidgetsApp.localeListResolutionCallback. Since this method may return null, a Flutter/dart algorithm should still be provided as a fallback in case a native resolved locale cannot be determined or if the native resolved locale is undesirable.
This method may return a null Locale if the platform does not support native locale resolution, or if the resolution failed.
The first supportedLocale
is treated as the default locale and will be returned
if no better match is found.
Android and iOS are currently supported.
On Android, the algorithm described in https://developer.android.com/guide/topics/resources/multilingual-support is used to determine the resolved locale. Depending on the android version of the device, either the modern (>= API 24) or legacy (< API 24) algorithm will be used.
On iOS, the result of preferredLocalizationsFromArray
method of NSBundle
is returned. See:
https://developer.apple.com/documentation/foundation/nsbundle/1417249-preferredlocalizationsfromarray?language=objc
for details on the used method.
iOS treats script code as necessary for a match, so a user preferred locale of
zh_Hans_CN
will not resolve to a supported locale of zh_CN
.
Since implementation may vary by platform and has potential to be heavy, it is recommended to cache the results of this method if the value is used multiple times.
Second-best (and n-best) matching locales should be obtained by calling this
method again with the matched locale of the first call omitted from
supportedLocales
.
Implementation
Locale? computePlatformResolvedLocale(List<Locale> supportedLocales) {
return platformDispatcher.computePlatformResolvedLocale(supportedLocales);
}