TListController<T, K> constructor

TListController<T, K>({
  1. List<T> items = const [],
  2. int itemsPerPage = 0,
  3. String search = '',
  4. int? searchDelay,
  5. TSelectionMode selectionMode = TSelectionMode.none,
  6. TExpansionMode expansionMode = TExpansionMode.none,
  7. TLoadListener<T>? onLoad,
  8. ItemKeyAccessor<T, K>? itemKey,
  9. ItemToString<T>? itemToString,
  10. ListItemFactory<T, K>? itemFactory,
  11. ItemChildrenAccessor<T>? itemChildren,
})

Implementation

TListController({
  List<T> items = const [],
  int itemsPerPage = 0,
  String search = '',
  int? searchDelay,
  TSelectionMode selectionMode = TSelectionMode.none,
  TExpansionMode expansionMode = TExpansionMode.none,
  this.onLoad,
  ItemKeyAccessor<T, K>? itemKey,
  ItemToString<T>? itemToString,
  ListItemFactory<T, K>? itemFactory,
  this.itemChildren,
})  : _isServerSide = onLoad != null,
      _debouncer = TDebouncer(milliseconds: searchDelay ?? (onLoad != null ? 2500 : 750)),
      itemToString = itemToString ?? _defaultItemToString,
      itemKey = itemKey ?? _defaultItemKey,
      itemFactory = itemFactory ?? _defaultItemFactory(itemKey ?? _defaultItemKey, itemChildren),
      filter = TSearchFilter(itemToString: itemToString ?? _defaultItemToString),
      super(
        TListState<T, K>(
          displayItems: const [],
          selectedKeys: LinkedHashSet<K>(),
          expandedKeys: LinkedHashSet<K>(),
          page: 1,
          itemsPerPage: itemsPerPage,
          totalItems: items.length,
          loading: false,
          hasMoreItems: true,
          search: search,
          selectionMode: selectionMode,
          expansionMode: expansionMode,
          error: null,
        ),
      ) {
  assert(
    allowedKeyTypes.contains(K),
    'Invalid key type <$K>. '
    'Allowed key types are: String, int, double, num, bool.',
  );

  assert(
    itemKey != null || (allowedKeyTypes.contains(T) && K == T) || K == int,
    'If `itemKey` is not provided, generic type K must be int.',
  );

  updateItems(items);
}