Files
umbrix/lib/features/settings/widgets/theme_mode_switch_button.dart

52 lines
1.3 KiB
Dart
Raw Normal View History

2023-07-06 17:18:41 +03:30
import 'package:flutter/material.dart';
2023-09-12 00:05:44 +03:30
import 'package:hiddify/core/core_providers.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
2023-07-06 17:18:41 +03:30
2023-09-12 00:05:44 +03:30
class ThemeModeSwitch extends HookConsumerWidget {
2023-07-06 17:18:41 +03:30
const ThemeModeSwitch({
super.key,
required this.themeMode,
required this.onChanged,
});
final ThemeMode themeMode;
final ValueChanged<ThemeMode> onChanged;
@override
2023-09-12 00:05:44 +03:30
Widget build(BuildContext context, WidgetRef ref) {
final t = ref.watch(translationsProvider);
2023-07-06 17:18:41 +03:30
final List<bool> isSelected = <bool>[
themeMode == ThemeMode.light,
themeMode == ThemeMode.system,
themeMode == ThemeMode.dark,
];
return ToggleButtons(
isSelected: isSelected,
onPressed: (int newIndex) {
if (newIndex == 0) {
onChanged(ThemeMode.light);
} else if (newIndex == 1) {
onChanged(ThemeMode.system);
} else {
onChanged(ThemeMode.dark);
}
},
2023-09-12 00:05:44 +03:30
children: <Widget>[
Icon(
Icons.wb_sunny,
semanticLabel: t.settings.general.themeModes.light,
),
Icon(
Icons.phone_iphone,
semanticLabel: t.settings.general.themeModes.system,
),
Icon(
Icons.bedtime,
semanticLabel: t.settings.general.themeModes.dark,
),
2023-07-06 17:18:41 +03:30
],
);
}
}