fillSelect<T, S> static method

void fillSelect<T, S>(
  1. List<ISelectBox<T>>? dataList,
  2. Iterable<S>? selectList, {
  3. Predicate<T?, S?>? predicate,
  4. bool maintain = false,
  5. bool penetrate = false,
})

填充选择状态

Implementation

static void fillSelect<T, S>(
    List<ISelectBox<T>>? dataList, Iterable<S>? selectList,
    {Predicate<T?, S?>? predicate,
    bool maintain = false,
    bool penetrate = false}) {
  //数据为空则不进行
  if (dataList == null) {
    return;
  }
  //配置predicate!=null;
  predicate ??= (src, beCompared) {
    return src == beCompared;
  };
  for (var item in dataList) {
    //配置是否保持
    if (!maintain) {
      item.boxChecked = false;
    }
    //根据selectList填充是否选择
    if (selectList != null) {
      for (final selectedItem in selectList) {
        if (predicate(item.boxData, selectedItem)) {
          item.boxChecked = true;
          break;
        }
      }
    }
    ;
    //填充子节点
    if (item.boxChildren != null && penetrate) {
      SelectUtils.fillSelect(
          item.boxChildren as List<ISelectBox<T>>, selectList,
          predicate: predicate, maintain: maintain, penetrate: penetrate);
    }
  }
}