getDictList method

Future<List<DictEntity>?> getDictList(
  1. String groupCode, {
  2. bool useCache = true,
  3. String systemDic = "1",
  4. bool onlyEnable = true,
})

获取字典列表 如果使用缓存且缓存存在,则直接返回缓存数据 否则,将异步加载数据,并缓存结果

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;
}