TListController<T, K> constructor
TListController<T, K> ({
- List<
T> items = const [], - int itemsPerPage = 0,
- String search = '',
- int? searchDelay,
- TSelectionMode selectionMode = TSelectionMode.none,
- TExpansionMode expansionMode = TExpansionMode.none,
- TLoadListener<
T> ? onLoad, - ItemKeyAccessor<
T, K> ? itemKey, - ItemToString<
T> ? itemToString, - ListItemFactory<
T, K> ? itemFactory, - 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);
}