feat: language setting
This commit is contained in:
@@ -45,12 +45,15 @@ class _MainAppState extends State<MainApp> {
|
||||
SharedPrefSingleton().appTheme ? ThemeMode.light : ThemeMode.dark;
|
||||
ThemeMode get getCurrentTheme => _themeMode;
|
||||
|
||||
Locale? _locale;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
theme: ThemeData(),
|
||||
darkTheme: ThemeData.dark(),
|
||||
themeMode: _themeMode,
|
||||
locale: _locale,
|
||||
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||||
supportedLocales: AppLocalizations.supportedLocales,
|
||||
home: const Scaffold(
|
||||
@@ -59,6 +62,12 @@ class _MainAppState extends State<MainApp> {
|
||||
);
|
||||
}
|
||||
|
||||
void changeLocale(Locale locale) {
|
||||
setState(() {
|
||||
_locale = locale;
|
||||
});
|
||||
}
|
||||
|
||||
void changeTheme(ThemeMode mode) {
|
||||
mode == ThemeMode.light
|
||||
? SharedPrefSingleton().setAppTheme(true).then((onValue) {
|
||||
|
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:winui_n2n/main.dart';
|
||||
import 'package:winui_n2n/shared_pref_singleton.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
@@ -30,6 +31,23 @@ class _SettingPageState extends State<SettingPage> {
|
||||
),
|
||||
],
|
||||
),
|
||||
DropdownButton<Locale>(
|
||||
value: Localizations.localeOf(context),
|
||||
items:
|
||||
AppLocalizations.supportedLocales.map<DropdownMenuItem<Locale>>(
|
||||
(e) {
|
||||
return DropdownMenuItem(
|
||||
value: e,
|
||||
child: Text(e.toString()),
|
||||
);
|
||||
},
|
||||
).toList(),
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
MainApp.of(context).changeLocale(value!);
|
||||
});
|
||||
},
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
ScaffoldMessenger.of(context)
|
||||
|
Reference in New Issue
Block a user