Files
Remever/lib/theme/extensions/app_theme_extensions.dart
2025-03-03 20:59:42 +03:00

66 lines
1.6 KiB
Dart

// Flutter imports:
import 'package:flutter/material.dart';
///
/// Расширение для темы всего приложения
/// Для [Theme]
///
/// Используется для хранения общих типов цветов
///
class AppThemeExtension extends ThemeExtension<AppThemeExtension> {
AppThemeExtension({
required this.background,
required this.textColor,
required this.appBarBackground,
});
AppThemeExtension.light()
: background = Colors.white,
textColor = Colors.black,
appBarBackground = Colors.indigo;
AppThemeExtension.dark()
: background = Colors.black,
textColor = Colors.white,
appBarBackground = Colors.lightGreen;
/// Цвет фона
final Color background;
/// Цвет текста
final Color textColor;
/// Цвет фона [AppBar]
final Color appBarBackground;
@override
ThemeExtension<AppThemeExtension> copyWith({
Color? background,
Color? textColor,
Color? appBarBackground,
}) {
return AppThemeExtension(
background: background ?? this.background,
textColor: textColor ?? this.textColor,
appBarBackground: appBarBackground ?? this.appBarBackground,
);
}
@override
ThemeExtension<AppThemeExtension> lerp(
ThemeExtension<AppThemeExtension>? other,
double t,
) {
if (other is! AppThemeExtension) {
return this;
}
return AppThemeExtension(
background: Color.lerp(background, other.background, t)!,
textColor: Color.lerp(textColor, other.textColor, t)!,
appBarBackground:
Color.lerp(appBarBackground, other.appBarBackground, t)!,
);
}
}