getDictList method
获取字典列表 如果使用缓存且缓存存在,则直接返回缓存数据 否则,将异步加载数据,并缓存结果
Implementation
Future<List<DictEntity>?> getDictList(
String groupCode, {
bool useCache = true,
String systemDic = "1",
bool onlyEnable = true,
}) async {
var result = _dictMap[groupCode];
if (result != null && useCache) {
return onlyEnable ? _filterAvailable(result) : result;
}
Completer<List<DictEntity>>? completer = _tasks[groupCode];
if (completer != null) {
return completer.future;
}
completer = Completer();
_tasks[groupCode] = completer;
EcpGlobalApi.getGroupDicListTree(
groupCode: groupCode,
systemDic: systemDic,
).toRequest().onSuccess((value) {
_dictMap[groupCode] = value;
_tasks.remove(groupCode);
var result = onlyEnable ? _filterAvailable(value) : value;
completer!.complete(result);
}).onError((error) {
_tasks.remove(groupCode);
completer!.completeError(error);
}).start();
return completer.future;
}