itemOnSelected method

void itemOnSelected(
  1. STabEntityAndIndexData data,
  2. int index
)

点击按钮选项 data 包含当前点击的分组数据 和 分组下标 index 按钮下标

Implementation

void itemOnSelected(STabEntityAndIndexData data, int index) async {
  if (onItemIntercept != null) {
    final isIntercept = await onItemIntercept!.call(data.$1, index);
    if (isIntercept == true) {
      return;
    }
  }

  // 重置额外输入(可添加互斥,额外输入与筛选按钮可合并返回)
  resetAttachment(data.$1.key);

  final group = data.$1;
  final single = group.isRadio;

  var groups = value.items;
  for (var i = 0; i < groups.length; i++) {
    var tempGroup = groups[i];
    // 当前操做的数据组
    if (i == data.$2) {
      // 修改按钮选中状态
      var items = tempGroup.items;
      for (var k = 0; k < items.length; k++) {
        // 单选
        if (single) {
          items[k].selected = false;
        } else {
          if (items[index].isMutex) {
            items[k].selected = false;
          } else {
            if (items[k].isMutex) {
              items[k].selected = false;
            }
          }
        }
        // 多选
        if (index == k) {
          items[k].selected = !items[k].selected;
        }
      }
    }
  }

  if (value.singleConditionAndSingleSelect) {
    // 完成条件
    completed();
  }
}