From 8fa6c51ea2478c0fea81983d523688b6f1dd64c0 Mon Sep 17 00:00:00 2001 From: debuggerx Date: Sun, 10 Oct 2021 02:20:04 +0800 Subject: [PATCH] fix: issues when change language. --- app/lib/widgets/language_switcher.dart | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/lib/widgets/language_switcher.dart b/app/lib/widgets/language_switcher.dart index 50c7df1..d82bec7 100644 --- a/app/lib/widgets/language_switcher.dart +++ b/app/lib/widgets/language_switcher.dart @@ -2,12 +2,15 @@ import 'package:collection/collection.dart'; import 'package:dde_gesture_manager/constants/sp_keys.dart'; import 'package:dde_gesture_manager/constants/supported_locales.dart'; import 'package:dde_gesture_manager/extensions.dart'; +import 'package:dde_gesture_manager/generated/codegen_loader.g.dart'; import 'package:dde_gesture_manager/generated/locale_keys.g.dart'; +import 'package:dde_gesture_manager/models/local_schemes_provider.dart'; import 'package:dde_gesture_manager/utils/helper.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:window_manager/window_manager.dart'; +import 'package:easy_localization/src/translations.dart'; class LanguageSwitcher extends StatelessWidget { const LanguageSwitcher({Key? key}) : super(key: key); @@ -18,7 +21,7 @@ class LanguageSwitcher extends StatelessWidget { var _supportedLocale = supportedLocales.firstWhereOrNull((element) => element == _locale); return PopupMenuButton( - tooltip: LocaleKeys.language_tip.tr(), + tooltip: LocaleKeys.language_tip.tr(), child: Row( children: [ Icon(Icons.language_outlined, size: 20), @@ -41,7 +44,18 @@ class LanguageSwitcher extends StatelessWidget { ), onTap: () { EasyLocalization.of(context)?.setLocale(locale).then((_) { - if (!kIsWeb) WindowManager.instance.setTitle(LocaleKeys.app_name.tr()); + context.locale.sout(); + var localeMap = Translations(CodegenLoader.mapLocales[context.locale.toString()]!); + if (!kIsWeb) WindowManager.instance.setTitle(localeMap.get(LocaleKeys.app_name)!); + var localSchemesProvider = context.read(); + var schemes = localSchemesProvider.schemes!; + var newSchemes = [ + schemes.first + ..scheme.name = localeMap.get(LocaleKeys.local_manager_default_scheme_label) + ..scheme.description = localeMap.get(LocaleKeys.local_manager_default_scheme_description), + ...schemes.skip(1), + ]; + localSchemesProvider.setProps(schemes: newSchemes); }); H().sp.setInt(SPKeys.userLanguage, supportedLocales.indexOf(locale)); },