Theme Mode #1
This commit is contained in:
24
lib/features/auth/controllers/theme_mode_cubit.dart
Normal file
24
lib/features/auth/controllers/theme_mode_cubit.dart
Normal file
@@ -0,0 +1,24 @@
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'theme_mode_state.dart';
|
||||
|
||||
|
||||
class ThemeModeCubit extends Cubit<ThemeModeState> {
|
||||
ThemeModeCubit() : super(const ThemeModeState(mode: ThemeMode.system)) {
|
||||
loadThemeMode();
|
||||
}
|
||||
|
||||
Future<void> loadThemeMode() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final modeIndex = prefs.getInt('theme_mode') ?? 2; // default system
|
||||
final mode = ThemeMode.values[modeIndex];
|
||||
emit(ThemeModeState(mode: mode));
|
||||
}
|
||||
|
||||
Future<void> changeThemeMode(ThemeMode mode) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setInt('theme_mode', mode.index);
|
||||
emit(ThemeModeState(mode: mode));
|
||||
}
|
||||
}
|
11
lib/features/auth/controllers/theme_mode_state.dart
Normal file
11
lib/features/auth/controllers/theme_mode_state.dart
Normal file
@@ -0,0 +1,11 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class ThemeModeState extends Equatable {
|
||||
final ThemeMode mode;
|
||||
|
||||
const ThemeModeState({required this.mode});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [mode];
|
||||
}
|
Reference in New Issue
Block a user