Skip to content

Commit

Permalink
refactor: refactor settings
Browse files Browse the repository at this point in the history
  • Loading branch information
mumu-lhl committed Nov 30, 2024
1 parent c215604 commit ba08d6d
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 24 deletions.
24 changes: 5 additions & 19 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import "package:ciyue/pages/main/main.dart";
import "package:ciyue/pages/manage_dictionaries/main.dart";
import "package:ciyue/pages/manage_dictionaries/settings_dictionary.dart";
import "package:ciyue/pages/webview_display.dart";
import "package:ciyue/settings.dart";
import "package:dict_reader/dict_reader.dart";
import "package:dynamic_color/dynamic_color.dart";
import "package:flutter/material.dart";
Expand All @@ -21,19 +22,6 @@ void main() async {
prefs = await SharedPreferences.getInstance();
dict.path = prefs.getString("currentDictionaryPath");

final themeModeString = prefs.getString("themeMode");
switch (themeModeString) {
case "light":
themeMode = ThemeMode.light;
case "dark":
themeMode = ThemeMode.dark;
case "system" || null:
themeMode = ThemeMode.system;
}

language = prefs.getString("language");
language ??= "system";

dictionaryList = appDatabase();

if (dict.path != null) {
Expand Down Expand Up @@ -84,11 +72,9 @@ const platform = MethodChannel("org.eu.mumulhl.ciyue/process_text");

late AppDatabase dictionaryList;
late FlutterTts flutterTts;
String? language;
late PackageInfo packageInfo;
late SharedPreferences prefs;
late VoidCallback refreshAll;
late ThemeMode themeMode;

final _router = GoRouter(
routes: [
Expand Down Expand Up @@ -126,14 +112,14 @@ class _DictionaryState extends State<Dictionary> {
@override
Widget build(BuildContext context) {
Locale? locale;
if (language != "system") {
final splittedLanguage = language!.split("_");
if (settings.language != "system") {
final splittedLanguage = settings.language!.split("_");
if (splittedLanguage.length > 1) {
locale = Locale.fromSubtags(
languageCode: splittedLanguage[0],
countryCode: splittedLanguage[1]);
} else {
locale = Locale(language!);
locale = Locale(settings.language!);
}
}

Expand All @@ -142,7 +128,7 @@ class _DictionaryState extends State<Dictionary> {
title: "Dictionary",
theme: ThemeData(colorScheme: lightColorScheme),
darkTheme: ThemeData(colorScheme: darkColorScheme),
themeMode: themeMode,
themeMode: settings.themeMode,
locale: locale,
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
Expand Down
8 changes: 4 additions & 4 deletions lib/pages/main/settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ class _LanguageSelectorState extends State<LanguageSelector> {
tapUpDetails.globalPosition.dx,
tapUpDetails.globalPosition.dy,
),
initialValue: language,
initialValue: settings.language,
items: [
PopupMenuItem(
value: "system",
Expand All @@ -266,7 +266,7 @@ class _LanguageSelectorState extends State<LanguageSelector> {
);

if (languageSelected != null) {
language = languageSelected;
settings.language = languageSelected;

prefs.setString("language", languageSelected);

Expand Down Expand Up @@ -298,7 +298,7 @@ class _ThemeSelectorState extends State<ThemeSelector> {
tapUpDetails.globalPosition.dx,
tapUpDetails.globalPosition.dy,
),
initialValue: themeMode,
initialValue: settings.themeMode,
items: [
PopupMenuItem(value: ThemeMode.light, child: Text(locale.light)),
PopupMenuItem(value: ThemeMode.dark, child: Text(locale.dark)),
Expand All @@ -307,7 +307,7 @@ class _ThemeSelectorState extends State<ThemeSelector> {
);

if (themeModeSelected != null) {
themeMode = themeModeSelected;
settings.themeMode = themeModeSelected;

String themeModeString;
switch (themeModeSelected) {
Expand Down
18 changes: 17 additions & 1 deletion lib/settings.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,26 @@
import 'package:ciyue/main.dart';
import "package:ciyue/main.dart";
import "package:flutter/material.dart";

class _Settings {
late bool autoExport;
late ThemeMode themeMode;
String? language;

_Settings() {
autoExport = prefs.getBool("autoExport") ?? false;

language = prefs.getString("language");
language ??= "system";

final themeModeString = prefs.getString("themeMode");
switch (themeModeString) {
case "light":
themeMode = ThemeMode.light;
case "dark":
themeMode = ThemeMode.dark;
case "system" || null:
themeMode = ThemeMode.system;
}
}
}

Expand Down

0 comments on commit ba08d6d

Please sign in to comment.