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