import 'dart:convert'; import 'dart:ui'; import '../../models/course_module_entity.dart'; import '../../utils/sp_util.dart'; import '../utils/color_parser.dart'; ///模块缓存类 class ModuleCache { // Private constructor ModuleCache._privateConstructor(); // Singleton instance static final ModuleCache _instance = ModuleCache._privateConstructor(); // Public accessor for the singleton instance static ModuleCache get instance => _instance; // Variable to store the current module entity CourseModuleEntity? _currentModule; // Key for SharedPreferences static const String _moduleKey = "courseModule"; // Initialize the cache by loading data from SharedPreferences Future init() async { String? jsonString = SpUtil.getInstance().get(_moduleKey); if (jsonString != null) { _currentModule = CourseModuleEntity.fromJson(json.decode(jsonString)); } } // Getter and setter for the current module CourseModuleEntity? get currentModule => _currentModule; set currentModule(CourseModuleEntity? value) { _currentModule = value; _saveToPrefs(value); } // Method to clear the cached module data void clear() { _currentModule = null; _clearPrefs(); } // Save module data to SharedPreferences void _saveToPrefs(CourseModuleEntity? module) { if (module != null) { String jsonString = json.encode(module.toJson()); SpUtil.getInstance().setData(_moduleKey, jsonString); } else { SpUtil.getInstance().remove(_moduleKey); } } String getCurrentThemeColorStr({String? colorStr}) { return colorStr ?? _currentModule.getSafeThemeColor(); } ///根据当前课程阶段获取系统主题色 Color getCurrentThemeColor({String? colorStr}) { return parseColor(getCurrentThemeColorStr(colorStr: colorStr)); } ///根据当前课程阶段获取系统主题名称 String getCurrentThemeName({String? name}) { return name ?? _currentModule.getSafeName(); } // Clear all data from SharedPreferences void _clearPrefs() async { SpUtil.getInstance().remove(_moduleKey); } }