refreshPresentDataAndController method

void refreshPresentDataAndController(
  1. int position,
  2. int selectedIndex,
  3. bool jump
)

position 变动的列 selectedIndex 对应选中的index jump 是否需要jumpToItem

Implementation

void refreshPresentDataAndController(int position, int selectedIndex, bool jump) {
  // 新选中的数据
  var selectValue = presentData[position][selectedIndex];
  // 更新选中的数据
  selectedData[position] = selectValue;
  selectedIndexes[position] = selectedIndex;
  if (jump) {
    controllers[position].jumpToItem(selectedIndex);
  }
  // 如果不是最后一列 数据的变动都会造成剩下列的更新
  if (position < columnNum - 1) {
    if (presentData[position].length == 1 && presentData[position].first == placeData) {
      presentData[position + 1] = [placeData];
    } else {
      presentData[position + 1] = findColumnData(position + 1);
    }
    refreshPresentDataAndController(position + 1, 0, true);
  }
}