itemOnHightlighted method

void itemOnHightlighted(
  1. int index,
  2. int column
)

fence 模式下分组切换

Implementation

void itemOnHightlighted(int index, int column) async {
  // final items = getColumn(column);

  /// 如果当前点击`item`为最末子集(它的`items`为空)
  /// 直接设置选中状态
  // if (items[index].items.isEmpty) {
  //   itemOnSelected(index, column, false);
  // }

  // for (var k = 0; k < items.length; k++) {
  //   // 单选
  //   if (items[k].items.isNotEmpty || column == 0) {
  //     items[k].highlighted = index == k;
  //   }
  // }

  /// 获取子集数据列表
  var list = List.of(value.idxList);
  for (var i = column; i < value.idxList.length; i++) {
    list.replaceRange(i, i + 1, [i > column ? 0 : index]);
  }
  value = value.copyWith(idxList: list);

  /// 单选
  if (value.data.isRadio && column == value.idxList.length - 1) {
    // itemOnSelected(index, column, false);
    final items = getColumn(column);
    final item = items[index];

    // 清空之前选项
    chidrenSelected(value.data.items, false);

    // 设置当前及子集选中
    item.selected = !item.selected;

    for (var i = 0; i < value.idxList.length; i++) {
      if (i >= column) {
        break;
      }
      final idx = value.idxList[i];
      final list = getColumn(i);
      if (list[idx].items.isNotEmpty) {
        list[idx].selected = chidrenSelectedStatus(list[idx].items);
      }
    }

    // 结束选择
    completed();
  }
}