Line data Source code
1 : // Copyright 2023 The terCAD team. All rights reserved. 2 : // Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file. 3 : 4 : import 'package:app_finance/_classes/storage/app_preferences.dart'; 5 : import 'package:flutter/material.dart'; 6 : 7 : class AppTheme extends ValueNotifier<ThemeMode> { 8 1 : AppTheme(super.value) { 9 1 : final val = AppPreferences.get(AppPreferences.prefTheme); 10 : if (val != null) { 11 0 : _set(val); 12 : } 13 : } 14 : 15 1 : _set(String val) { 16 1 : int? idx = int.tryParse(val); 17 2 : if (idx != null && idx < ThemeMode.values.length) { 18 1 : final newValue = ThemeMode.values[idx]; 19 2 : if (newValue != value) { 20 1 : value = newValue; 21 1 : notifyListeners(); 22 : } 23 : } 24 : } 25 : 26 1 : Future<void> setTheme(String value) async { 27 1 : await AppPreferences.set(AppPreferences.prefTheme, value); 28 1 : _set(value); 29 : } 30 : }