diff --git a/lib/features/common/general_pref_tiles.dart b/lib/features/common/general_pref_tiles.dart index aad736f8..0230602c 100644 --- a/lib/features/common/general_pref_tiles.dart +++ b/lib/features/common/general_pref_tiles.dart @@ -5,12 +5,12 @@ import 'package:hiddify/core/localization/locale_extensions.dart'; import 'package:hiddify/core/localization/locale_preferences.dart'; import 'package:hiddify/core/localization/translations.dart'; import 'package:hiddify/core/model/region.dart'; -import 'package:hiddify/core/preferences/general_preferences.dart'; +import 'package:hiddify/core/theme/app_theme_mode.dart'; +import 'package:hiddify/core/theme/theme_preferences.dart'; import 'package:hiddify/features/config_option/data/config_option_repository.dart'; -import 'package:hiddify/features/config_option/notifier/config_option_notifier.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -class LocalePrefTile extends HookConsumerWidget { +class LocalePrefTile extends ConsumerWidget { const LocalePrefTile({super.key}); @override @@ -50,7 +50,7 @@ class LocalePrefTile extends HookConsumerWidget { } } -class RegionPrefTile extends HookConsumerWidget { +class RegionPrefTile extends ConsumerWidget { const RegionPrefTile({super.key}); @override @@ -102,7 +102,7 @@ class RegionPrefTile extends HookConsumerWidget { } } -class EnableAnalyticsPrefTile extends HookConsumerWidget { +class EnableAnalyticsPrefTile extends ConsumerWidget { const EnableAnalyticsPrefTile({ super.key, this.onChanged, @@ -137,3 +137,43 @@ class EnableAnalyticsPrefTile extends HookConsumerWidget { ); } } + +class ThemeModePrefTile extends ConsumerWidget { + const ThemeModePrefTile({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final t = ref.watch(translationsProvider); + + final themeMode = ref.watch(themePreferencesProvider); + + return ListTile( + title: Text(t.settings.general.themeMode), + subtitle: Text(themeMode.present(t)), + leading: const Icon(FluentIcons.weather_moon_20_regular), + onTap: () async { + final selectedThemeMode = await showDialog( + context: context, + builder: (context) { + return SimpleDialog( + title: Text(t.settings.general.themeMode), + children: AppThemeMode.values + .map( + (e) => RadioListTile( + title: Text(e.present(t)), + value: e, + groupValue: themeMode, + onChanged: Navigator.of(context).maybePop, + ), + ) + .toList(), + ); + }, + ); + if (selectedThemeMode != null) { + await ref.read(themePreferencesProvider.notifier).changeThemeMode(selectedThemeMode); + } + }, + ); + } +} diff --git a/lib/features/settings/widgets/general_setting_tiles.dart b/lib/features/settings/widgets/general_setting_tiles.dart index 5d9cc0c9..eec40da8 100644 --- a/lib/features/settings/widgets/general_setting_tiles.dart +++ b/lib/features/settings/widgets/general_setting_tiles.dart @@ -19,39 +19,10 @@ class GeneralSettingTiles extends HookConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final t = ref.watch(translationsProvider); - final themeMode = ref.watch(themePreferencesProvider); - return Column( children: [ const LocalePrefTile(), - ListTile( - title: Text(t.settings.general.themeMode), - subtitle: Text(themeMode.present(t)), - leading: const Icon(FluentIcons.weather_moon_20_regular), - onTap: () async { - final selectedThemeMode = await showDialog( - context: context, - builder: (context) { - return SimpleDialog( - title: Text(t.settings.general.themeMode), - children: AppThemeMode.values - .map( - (e) => RadioListTile( - title: Text(e.present(t)), - value: e, - groupValue: themeMode, - onChanged: Navigator.of(context).maybePop, - ), - ) - .toList(), - ); - }, - ); - if (selectedThemeMode != null) { - await ref.read(themePreferencesProvider.notifier).changeThemeMode(selectedThemeMode); - } - }, - ), + const ThemeModePrefTile(), const EnableAnalyticsPrefTile(), SwitchListTile( title: Text(t.settings.general.autoIpCheck),