updateState method

void updateState({
  1. required String who,
  2. LinkedHashSet<K>? selectedKeys,
  3. LinkedHashSet<K>? expandedKeys,
  4. List<TListItem<T, K>>? displayItems,
  5. K? expandedDetailKey,
  6. bool clearExpandedDetail = false,
  7. K? editingItemKey,
  8. bool clearEditingItem = false,
  9. int? page,
  10. int? itemsPerPage,
  11. int? totalItems,
  12. bool? loading,
  13. bool? fetching,
  14. bool? hasMoreItems,
  15. bool? isCreatingItem,
  16. String? search,
  17. TSelectionMode? selectionMode,
  18. TExpansionMode? expansionMode,
  19. TListError? error,
  20. String? currentCursor,
  21. String? nextCursor,
  22. List<String>? cursorHistory,
  23. Map<String, dynamic>? advancedSearch,
  24. Map<String, dynamic>? additional,
})

Implementation

void updateState({
  required String who,
  LinkedHashSet<K>? selectedKeys,
  LinkedHashSet<K>? expandedKeys,
  List<TListItem<T, K>>? displayItems,
  K? expandedDetailKey,
  bool clearExpandedDetail = false,
  K? editingItemKey,
  bool clearEditingItem = false,
  int? page,
  int? itemsPerPage,
  int? totalItems,
  bool? loading,
  bool? fetching,
  bool? hasMoreItems,
  bool? isCreatingItem,
  String? search,
  TSelectionMode? selectionMode,
  TExpansionMode? expansionMode,
  TListError? error,
  String? currentCursor,
  String? nextCursor,
  List<String>? cursorHistory,
  Map<String, dynamic>? advancedSearch,
  Map<String, dynamic>? additional,
}) {
  if (_disposed) {
    debugPrint('Controller already disposed.');
    return;
  }

  var effectiveSelectedKeys = selectedKeys ?? value.selectedKeys;
  var effectiveExpandedKeys = expandedKeys ?? value.expandedKeys;
  var effectiveDisplayItems = displayItems ?? value.displayItems;

  var effectiveExpandedDetailKey = clearExpandedDetail ? null : (expandedDetailKey ?? value.expandedDetailKey);
  var effectiveEditingItemKey = clearEditingItem ? null : (editingItemKey ?? value.editingItemKey);

  if (displayItems != null && value.displayItems.isEmpty && effectiveDisplayItems.isNotEmpty) {
    if (autoSelectFirst && effectiveSelectedKeys.isEmpty && !_hasAutoSelectedFirst) {
      effectiveSelectedKeys = copyKeySet(effectiveSelectedKeys)..add(effectiveDisplayItems.first.key);
      _hasAutoSelectedFirst = true;
    }
    if (autoExpandFirst && effectiveExpandedKeys.isEmpty && !_hasAutoExpandedFirst) {
      effectiveExpandedKeys = copyKeySet(effectiveExpandedKeys)..add(effectiveDisplayItems.first.key);
      effectiveExpandedDetailKey = effectiveDisplayItems.first.key;
      _hasAutoExpandedFirst = true;
    }
  }

  if (isHierarchical && (displayItems != null || expandedKeys != null)) {
    effectiveDisplayItems = _flattenDisplayItems(
      items: effectiveDisplayItems,
      expandedKeys: effectiveExpandedKeys,
    );
  }

  value = TListState<T, K>(
    displayItems: effectiveDisplayItems,
    selectedKeys: effectiveSelectedKeys,
    expandedKeys: effectiveExpandedKeys,
    expandedDetailKey: effectiveExpandedDetailKey,
    editingItemKey: effectiveEditingItemKey,
    isCreatingItem: isCreatingItem ?? value.isCreatingItem,
    page: page ?? value.page,
    itemsPerPage: itemsPerPage ?? value.itemsPerPage,
    totalItems: totalItems ?? value.totalItems,
    loading: loading ?? value.loading,
    fetching: fetching ?? value.fetching,
    hasMoreItems: hasMoreItems ?? value.hasMoreItems,
    search: search ?? value.search,
    error: error ?? value.error,
    currentCursor: currentCursor ?? value.currentCursor,
    nextCursor: nextCursor ?? value.nextCursor,
    cursorHistory: cursorHistory ?? value.cursorHistory,
    advancedSearch: advancedSearch ?? value.advancedSearch,
    additional: additional ?? value.additional,
  );

  //debugPrint("$who: $value");
}