config_store.dart 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import 'package:chicken_farm/apis/system/_config.dart';
  2. import 'package:chicken_farm/modes/system/config.dart';
  3. class ConfigStore {
  4. static final ConfigStore _instance = ConfigStore._internal();
  5. // static const String _localStorgeKey = 'vb_config_';
  6. final Map<String, ConfigModel> _cache = {};
  7. factory ConfigStore() => _instance;
  8. ConfigStore._internal();
  9. Future<String?> getConfigValue(String configKey) async {
  10. final config = await getConfigByKey(configKey);
  11. return config?.configValue;
  12. }
  13. /// 根据配置key获取配置信息
  14. /// 先从缓存中查找,如果缓存中没有则调用接口查询
  15. Future<ConfigModel?> getConfigByKey(String configKey) async {
  16. // 先从内存缓存中查找
  17. if (_cache.containsKey(configKey)) {
  18. return _cache[configKey];
  19. }
  20. // 再从本地存储中查找
  21. // final cachedConfig = await StorageUtils.getObject<Map<String, dynamic>>(
  22. // '$_localStorgeKey$configKey',
  23. // );
  24. // if (cachedConfig != null) {
  25. // final config = ConfigModel.fromJson(cachedConfig);
  26. // _cache[configKey] = config;
  27. // return config;
  28. // }
  29. // 如果本地都没有,则调用接口查询
  30. final config = await ConfigApi().getConfigKey(configKey);
  31. if (config != null) {
  32. // 存入缓存
  33. _cache[configKey] = config;
  34. // await StorageUtils.setObject(
  35. // '$_localStorgeKey$configKey',
  36. // config.toJson(),
  37. // );
  38. }
  39. return config;
  40. }
  41. /// 清除指定配置的缓存
  42. void clearConfigCache(String configKey) {
  43. _cache.remove(configKey);
  44. //StorageUtils.remove('$_localStorgeKey$configKey');
  45. }
  46. /// 清除所有配置缓存
  47. void clearAll() {
  48. _cache.clear();
  49. //StorageUtils.removeWithPrefix(_localStorgeKey);
  50. }
  51. }