refactor: replace HookConsumerWidget with ConsumerWidget and add ThemeModePrefTile

This commit is contained in:
TheLastFlame
2024-10-03 17:41:09 +10:00
parent 0ff4a04a4b
commit 55230f6f0f
2 changed files with 46 additions and 35 deletions

View File

@@ -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<AppThemeMode>(
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);
}
},
);
}
}

View File

@@ -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<AppThemeMode>(
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),