fixed language switching issue

This commit is contained in:
appflowy 2022-01-29 09:24:04 +08:00
parent 835a64ca75
commit d7b936a017
5 changed files with 43 additions and 19 deletions

View File

@ -90,9 +90,9 @@
"inlineCode": "内联代码",
"quote": "块引用"
},
"tooltip":{
"lightMode" : "切换到灯光模式",
"darkMode" : "切换到暗模式"
"tooltip": {
"lightMode": "切换到灯光模式",
"darkMode": "切换到暗模式"
},
"contactsPage": {
"title": "联系人",
@ -127,5 +127,16 @@
"instruction3": "进入下面的链接,然后输入上面的代码:",
"instruction4": "完成注册后,点击下面的按钮:"
}
},
"settings": {
"title": "设置",
"menu": {
"appearance": "外观",
"language": "语言"
},
"appearance": {
"lightLabel": "日间模式",
"darkLabel": "夜间模式"
}
}
}
}

View File

@ -66,18 +66,23 @@ class ApplicationWidget extends StatelessWidget {
(value) => value.language,
);
return Provider.value(
value: theme,
child: MaterialApp(
builder: overlayManagerBuilder(),
debugShowCheckedModeBanner: false,
theme: theme.themeData,
localizationsDelegates: context.localizationDelegates,
supportedLocales: context.supportedLocales,
locale: localeFromLanguageName(language),
navigatorKey: AppGlobals.rootNavKey,
home: child,
),
return MultiProvider(
providers: [
Provider.value(value: theme),
Provider.value(value: language),
],
builder: (context, _) {
return MaterialApp(
builder: overlayManagerBuilder(),
debugShowCheckedModeBanner: false,
theme: theme.themeData,
localizationsDelegates: context.localizationDelegates,
supportedLocales: context.supportedLocales,
locale: localeFromLanguageName(language),
navigatorKey: AppGlobals.rootNavKey,
home: child,
);
},
);
},
);

View File

@ -4,6 +4,7 @@ import 'package:flowy_infra/theme.dart';
import 'package:flowy_infra/language.dart';
import 'package:flowy_sdk/protobuf/flowy-user-data-model/user_setting.pb.dart';
import 'package:flutter/material.dart';
import 'package:easy_localization/easy_localization.dart';
class AppearanceSettingModel extends ChangeNotifier with EquatableMixin {
AppearanceSettings setting;
@ -37,12 +38,12 @@ class AppearanceSettingModel extends ChangeNotifier with EquatableMixin {
}
}
void setLanguage(AppLanguage language) {
void setLanguage(BuildContext context, AppLanguage language) {
String languageString = stringFromLanguageName(language);
if (setting.language != languageString) {
context.setLocale(localeFromLanguageName(language));
_language = language;
print('language changed to $languageString');
setting.language = languageString;
notifyListeners();
save();

View File

@ -39,7 +39,7 @@ class _LanguageSelectorDropdownState extends State<LanguageSelectorDropdown> {
value: context.read<AppearanceSettingModel>().language,
onChanged: (val) {
setState(() {
context.read<AppearanceSettingModel>().setLanguage(val!);
context.read<AppearanceSettingModel>().setLanguage(context, val!);
});
},
items: AppLanguage.values.map((language) {

View File

@ -33,5 +33,12 @@
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>fr</string>
<string>it</string>
<string>zh</string>
</array>
</dict>
</plist>