refactor(apps): 主题系统迁移至 ColorScheme + 扩展架构并支持 Dark Mode

This commit is contained in:
qzl
2026-03-27 19:07:39 +08:00
parent ecc1ec6ce4
commit ae29a8209b
146 changed files with 4301 additions and 3200 deletions
+55
View File
@@ -0,0 +1,55 @@
import 'memory_cache_store.dart';
import 'persistent_cache_store.dart';
class HybridCacheStore {
final MemoryCacheStore memory;
final PersistentCacheStore persistent;
final Map<String, Future<dynamic>> _inflight = <String, Future<dynamic>>{};
HybridCacheStore({required this.memory, required this.persistent});
Future<T?> read<T>(String key) async {
final memoryValue = await memory.read<T>(key);
if (memoryValue != null) {
return memoryValue;
}
final persistentValue = await persistent.read<T>(key);
if (persistentValue != null) {
await memory.write(key, persistentValue);
}
return persistentValue;
}
Future<void> write<T>(String key, T value) async {
await memory.write<T>(key, value);
await persistent.write<T>(key, value);
}
Future<void> remove(String key) async {
await memory.remove(key);
await persistent.remove(key);
}
Future<T> getOrLoad<T>(String key, {required Future<T> Function() loader}) {
final running = _inflight[key];
if (running != null) {
return running.then((value) => value as T);
}
final future = () async {
final cached = await read<T>(key);
if (cached != null) {
return cached;
}
final loaded = await loader();
await write<T>(key, loaded);
return loaded;
}();
_inflight[key] = future;
return future.whenComplete(() {
_inflight.remove(key);
});
}
}