Files
friflex_flutter_starter/lib/app/theme/theme_notifier.dart
petrovyuri 17d096baac init
2025-01-21 14:24:31 +03:00

34 lines
878 B
Dart

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
typedef ThemeBuilder = Widget Function();
/// Виджет для подписки на изменение темы приложения
class ThemeConsumer extends StatelessWidget {
const ThemeConsumer({super.key, required this.builder});
final ThemeBuilder builder;
@override
Widget build(BuildContext context) {
return Consumer<ThemeNotifier>(
builder: (_, __, ___) {
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;
notifyListeners();
}
}