Files
Vocasia-LMS-Mobile-apps--TA…/lib/providers/theme_provider.dart

61 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:initial_folder/theme.dart';
import 'package:shared_preferences/shared_preferences.dart';
class ThemeProvider with ChangeNotifier {
ThemeData _themeData = ThemeClass.darkmode;
ThemeProvider() {
loadTheme();
}
ThemeData get themeData => _themeData;
set themeData(ThemeData themeData) {
_themeData = themeData;
notifyListeners();
}
void toggleTheme() {
if (_themeData == ThemeClass.lightmode) {
themeData = ThemeClass.darkmode;
_saveTheme('dark');
} else {
themeData = ThemeClass.lightmode;
_saveTheme('light');
}
}
Future<void> loadTheme() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String? theme = prefs.getString('theme');
if (theme == null) {
var brightness =
WidgetsBinding.instance.platformDispatcher.platformBrightness;
if (brightness == Brightness.light) {
themeData = ThemeClass.lightmode;
_saveTheme('light');
} else {
themeData = ThemeClass.darkmode;
_saveTheme('dark');
}
} else if (theme == 'dark') {
themeData = ThemeClass.darkmode;
} else {
themeData = ThemeClass.lightmode;
}
notifyListeners();
}
Future<void> saveCurrentTheme() async {
String theme = _themeData == ThemeClass.darkmode ? 'dark' : 'light';
await _saveTheme(theme);
}
Future<void> _saveTheme(String theme) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('theme', theme);
}
}