initializeAllLocales method
Implementation
Future<bool> initializeAllLocales() {
var notInitializedLocales = getNotInitializedLocales(true);
if (notInitializedLocales.isEmpty) return Future.value(false);
var initializations = <String, int>{};
var completer = Completer<bool>();
var initOrder = getLocalesSequence(getCurrentLocale());
for (var l in initOrder.toList(growable: false)) {
var similarLocales = getSimilarLocales(l);
similarLocales.removeWhere((s) => initOrder.contains(s));
initOrder.addAll(similarLocales);
}
initOrder.addAll(notInitializedLocales);
for (var l in initOrder) {
l = Intl.canonicalizedLocale(l);
if (initializations.containsKey(l) ||
isInitializedLocale(l) ||
isInitializedLocaleWithAlternative(l)) {
continue;
}
var futureInit = _callInitializeLocale(l, true);
initializations[l] = 0;
futureInit.then((ok) {
_initializedLocales[l] = ok;
initializations[l] = ok ? 1 : 2;
var completed =
initializations.values.where((v) => v == 0).toList().isEmpty;
if (completed) {
var anyInit =
initializations.values.where((v) => v == 1).toList().isNotEmpty;
_onInitializeAllLocales();
completer.complete(anyInit);
}
});
}
if (initializations.isEmpty) {
completer.complete(false);
}
return completer.future;
}