init method

void init(
  1. List<T>? data
)

Implementation

void init(List<T>? data) {
  if (data == null) {
    return;
  }

  _sectionItems.clear();
  _sectionPositions.clear();
  activeSectionIndex.value = -1;
  activeIndexBarIndex.value = -1;

  int idx = 0;
  for (var item in data) {
    final section = item.section;
    if (!_sectionPositions.containsKey(section)) {
      if (_sectionItems.isNotEmpty) {
        _sectionItems[_sectionItems.length - 1] =
            _sectionItems.last.markAsLast();
      }

      _sectionItems.add(AntdIndexBarSectionItem(
        data: item,
        section: section,
        isSectionHeader: true,
        isLastInSection: false,
      ));
      _sectionPositions[section] = idx;
      idx += 1;
      continue;
    }

    _sectionItems.add(AntdIndexBarSectionItem(
      data: item,
      section: section,
      isSectionHeader: false,
      isLastInSection: false,
    ));
    idx += 1;
  }

  if (_sectionItems.isNotEmpty) {
    _sectionItems[_sectionItems.length - 1] = _sectionItems.last.markAsLast();
  }
}