This commit is contained in:
petrovyuri
2025-01-21 14:24:31 +03:00
parent e7b2c31e86
commit 17d096baac
96 changed files with 3575 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
import 'package:flutter/material.dart';
/// Класс, реализующий расширение для добавления токенов в цветовую схему
extension AppColorsScheme on ColorScheme {
bool get _isDark => brightness == Brightness.dark;
// Тестовый цвет
Color get testColor => _isDark ? Colors.green : Colors.red;
}

View File

@@ -0,0 +1,10 @@
import 'package:flutter/material.dart';
/// Класс для конфигурации светлой/темной темы приложения
abstract class AppTheme {
/// Геттер для получения светлой темы
static ThemeData get light => ThemeData.light();
/// Геттер для получения темной темы
static ThemeData get dark => ThemeData.dark();
}

View File

@@ -0,0 +1,33 @@
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();
}
}