GridResult<TListItem>.fromMap constructor

GridResult<TListItem>.fromMap(
  1. Map map, [
  2. TListItem itemParser(
    1. Map<String, dynamic> data
    )?
])

Factory constructor that creates an instance of GridResult from a Map.

Takes an optional itemParser function for custom mapping of items.

Implementation

factory GridResult.fromMap(
  Map<dynamic, dynamic> map, [
  TListItem Function(Map<String, dynamic> data)? itemParser,
]) {
  final List<TListItem> items =
      (map[GridResultJsonConfiguration.itemsJsonKey] as List<dynamic>?)
          ?.map<TListItem>((x) => itemParser?.call(x) ?? x as TListItem)
          .toList() ??
      [];
  final int pageSize = map[GridResultJsonConfiguration.pageSizeJsonKey] ?? 0;
  final String nextCursor =
      map[GridResultJsonConfiguration.nextCursorJsonKey] ?? '';

  return GridResult<TListItem>(
    items: items,
    hasMoreItems:
        map[GridResultJsonConfiguration.hasMoreItemsJsonKey] ??
        (nextCursor.isNotEmpty || items.abstractBlocListCount == pageSize),
    currentPage: map[GridResultJsonConfiguration.currentPageJsonKey] ?? 0,
    startPage: map[GridResultJsonConfiguration.startPageJsonKey] ?? 0,
    endPage: map[GridResultJsonConfiguration.endPageJsonKey] ?? 0,
    pageCount: map[GridResultJsonConfiguration.pageCountJsonKey] ?? 0,
    pageSize: pageSize,
    rowCount: map[GridResultJsonConfiguration.rowCountJsonKey] ?? 0,
    hasPreviousPage:
        map[GridResultJsonConfiguration.hasPreviousPageJsonKey] ?? 0,
    hasNextPage: map[GridResultJsonConfiguration.hasNextPageJsonKey] ?? 0,
    hasMultiplePages:
        map[GridResultJsonConfiguration.hasMultiplePagesJsonKey] ?? 0,
    firstRowOnPage:
        map[GridResultJsonConfiguration.firstRowOnPageJsonKey] ?? 0,
    lastRowOnPage: map[GridResultJsonConfiguration.lastRowOnPageJsonKey] ?? 0,
    hasItems:
        map[GridResultJsonConfiguration.hasItemsJsonKey] ??
        items.abstractBlocListIsNotNullOrEmpty,
    nextCursor: map[GridResultJsonConfiguration.nextCursorJsonKey],
    previousCursor: map[GridResultJsonConfiguration.previousCursorJsonKey],
    additionalData: map[GridResultJsonConfiguration.additionalDataJsonKey],
  );
}