mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2025-12-22 01:20:46 +00:00
init
This commit is contained in:
9
lib/app/theme/app_colors_scheme.dart
Normal file
9
lib/app/theme/app_colors_scheme.dart
Normal 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;
|
||||
}
|
||||
10
lib/app/theme/app_theme.dart
Normal file
10
lib/app/theme/app_theme.dart
Normal 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();
|
||||
}
|
||||
33
lib/app/theme/theme_notifier.dart
Normal file
33
lib/app/theme/theme_notifier.dart
Normal 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user