From bdd4fc946ee11d6dc00c5b69764541347cfe1d7d Mon Sep 17 00:00:00 2001 From: cialloo Date: Sun, 21 Jul 2024 18:00:43 +0800 Subject: [PATCH] feat: language setting --- lib/main.dart | 9 +++++++++ lib/setting_page.dart | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/lib/main.dart b/lib/main.dart index cac794f..f608294 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -45,12 +45,15 @@ class _MainAppState extends State { 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 { ); } + void changeLocale(Locale locale) { + setState(() { + _locale = locale; + }); + } + void changeTheme(ThemeMode mode) { mode == ThemeMode.light ? SharedPrefSingleton().setAppTheme(true).then((onValue) { diff --git a/lib/setting_page.dart b/lib/setting_page.dart index 789ad9c..202976c 100644 --- a/lib/setting_page.dart +++ b/lib/setting_page.dart @@ -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 { ), ], ), + DropdownButton( + value: Localizations.localeOf(context), + items: + AppLocalizations.supportedLocales.map>( + (e) { + return DropdownMenuItem( + value: e, + child: Text(e.toString()), + ); + }, + ).toList(), + onChanged: (value) { + setState(() { + MainApp.of(context).changeLocale(value!); + }); + }, + ), ElevatedButton( onPressed: () { ScaffoldMessenger.of(context)