itemOnSelected method

void itemOnSelected(
  1. int index,
  2. int column, [
  3. bool isHighlighted = true
])

点击按钮选项 index 按钮下标

Implementation

void itemOnSelected(int index, int column,
    [bool isHighlighted = true]) async {
  if (onItemIntercept != null) {
    final isIntercept =
        await onItemIntercept!.call(value.idxList, value.data);
    if (isIntercept == true) {
      return;
    }
  }

  final items = getColumn(column);
  final item = items[index];

  // 处理互斥选项
  for (var e in items) {
    // 如果当前为全选,则清空其他选项
    if (item.isMutex) {
      if (e.name != item.name) {
        e.selected = false;
        chidrenSelected(e.items, false);
      }
    } else {
      if (e.isMutex) {
        e.selected = false;
        chidrenSelected(e.items, false);
      }
    }
  }

  // 设置当前及子集选中
  item.selected = !item.selected;
  chidrenSelected(item.items, 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);
    }
  }

  // 切换选中项
  itemOnHightlighted(index, column);
}