From d30e2fc99ca9cd6756e8146efb3b07e5270c1b53 Mon Sep 17 00:00:00 2001 From: Shawn Date: Sun, 1 Jan 2023 12:28:13 -0700 Subject: [PATCH] exit early when finding system locale on web --- lib/logic/locale_logic.dart | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/logic/locale_logic.dart b/lib/logic/locale_logic.dart index 92e3181f..82843c08 100644 --- a/lib/logic/locale_logic.dart +++ b/lib/logic/locale_logic.dart @@ -4,23 +4,27 @@ import 'package:intl/intl_standalone.dart'; import 'package:wonders/common_libs.dart'; class LocaleLogic { + final Locale _defaultLocal = Locale('en'); + AppLocalizations? _strings; AppLocalizations get strings => _strings!; - bool get isLoaded => _strings != null; - bool get isEnglish => strings.localeName == 'en'; Future load() async { - final localeCode = settingsLogic.currentLocale.value ?? await findSystemLocale(); - Locale locale = Locale(localeCode.split('_')[0]); + Locale locale = _defaultLocal; + if (kIsWeb) return; // exit early on web as [findSystemLocale] throws errors as of Dec, 2022 if (kDebugMode) { - // Uncomment for testing in chinese - // locale = Locale('zh'); + // locale = Locale('zh'); // uncomment to test chinese } + final localeCode = settingsLogic.currentLocale.value ?? await findSystemLocale(); + // Try and find a supported locale + locale = Locale(localeCode.split('_')[0]); + // Fall back to default if (AppLocalizations.supportedLocales.contains(locale) == false) { - locale = Locale('en'); + locale = _defaultLocal; } + settingsLogic.currentLocale.value = locale.languageCode; _strings = await AppLocalizations.delegate.load(locale); }