import 'package:maxdash/helpers/services/localizations/language.dart'; import 'package:maxdash/helpers/services/storage/local_storage.dart'; import 'package:maxdash/helpers/theme/app_theme.dart'; import 'package:maxdash/helpers/theme/theme_customizer.dart'; import 'package:maxdash/helpers/widgets/my.dart'; import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; class AppNotifier extends ChangeNotifier { AppNotifier(); Future init() async { _changeTheme(); notifyListeners(); } updateTheme(ThemeCustomizer themeCustomizer) { _changeTheme(); notifyListeners(); LocalStorage.setCustomizer(themeCustomizer); } Future updateInStorage(ThemeCustomizer themeCustomizer) async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); sharedPreferences.setString("theme_customizer", themeCustomizer.toJSON()); } void changeDirectionality(TextDirection textDirection, [bool notify = true]) { AppTheme.textDirection = textDirection; My.setTextDirection(textDirection); if (notify) notifyListeners(); } Future changeLanguage(Language language, {bool notify = true, bool changeDirection = true}) async { if (changeDirection) { if (language.supportRTL) { changeDirectionality(TextDirection.rtl, false); } else { changeDirectionality(TextDirection.ltr, false); } } await ThemeCustomizer.changeLanguage(language); if (notify) notifyListeners(); } void _changeTheme() { AppTheme.theme = AppTheme.getThemeFromThemeMode(); AppStyle.changeMyTheme(); } }