33 lines
965 B
Dart
33 lines
965 B
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
enum AppThemeVariant { redDark, redLight, greenDark, greenLight }
|
|
|
|
class ThemeNotifier extends StateNotifier<AppThemeVariant> {
|
|
ThemeNotifier() : super(AppThemeVariant.redDark);
|
|
|
|
void set(AppThemeVariant v) => state = v;
|
|
}
|
|
|
|
final themeProvider =
|
|
StateNotifierProvider<ThemeNotifier, AppThemeVariant>(
|
|
(ref) => ThemeNotifier(),
|
|
);
|
|
|
|
/// Returns the accent color for the current theme variant.
|
|
extension AppThemeVariantX on AppThemeVariant {
|
|
Color get accentColor {
|
|
switch (this) {
|
|
case AppThemeVariant.redDark:
|
|
case AppThemeVariant.redLight:
|
|
return const Color(0xFFFF4444);
|
|
case AppThemeVariant.greenDark:
|
|
case AppThemeVariant.greenLight:
|
|
return const Color(0xFF00E676);
|
|
}
|
|
}
|
|
|
|
bool get isDark =>
|
|
this == AppThemeVariant.redDark || this == AppThemeVariant.greenDark;
|
|
}
|