Files
friflex_flutter_starter/lib/app/theme/theme_notifier.dart

35 lines
883 B
Dart
Raw Normal View History

2025-01-21 14:24:31 +03:00
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
typedef ThemeBuilder = Widget Function();
/// Виджет для подписки на изменение темы приложения
class ThemeConsumer extends StatelessWidget {
const ThemeConsumer({required this.builder, super.key});
2025-01-21 14:24:31 +03:00
final ThemeBuilder builder;
@override
Widget build(BuildContext context) {
return Consumer<ThemeNotifier>(
builder: (_, _, _) {
2025-01-21 14:24:31 +03:00
return builder();
},
);
}
}
/// Класс для управления темой приложения
final class ThemeNotifier extends ChangeNotifier {
ThemeMode _themeMode = ThemeMode.system;
ThemeMode get themeMode => _themeMode;
void changeTheme() {
_themeMode = _themeMode == ThemeMode.light
? ThemeMode.dark
: ThemeMode.light;
2025-01-21 14:24:31 +03:00
notifyListeners();
}
}