mirror of
https://github.com/SyncrowIOT/web.git
synced 2026-10-25 23:57:57 +00:00
Extracted pagination data into a generic DTO.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class PaginatedDataModel<T> extends Equatable {
|
||||
const PaginatedDataModel({
|
||||
required this.data,
|
||||
required this.page,
|
||||
required this.size,
|
||||
required this.hasNext,
|
||||
required this.totalItems,
|
||||
required this.totalPages,
|
||||
});
|
||||
|
||||
final List<T> data;
|
||||
final int page;
|
||||
final int size;
|
||||
final bool hasNext;
|
||||
final int totalItems;
|
||||
final int totalPages;
|
||||
|
||||
factory PaginatedDataModel.fromJson(
|
||||
Map<String, dynamic> json,
|
||||
T Function(Map<String, dynamic>) fromJsonT,
|
||||
) {
|
||||
return PaginatedDataModel<T>(
|
||||
data: (json['data'] as List<dynamic>? ?? [])
|
||||
.map((e) => fromJsonT(e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
page: json['page'] as int? ?? 1,
|
||||
size: json['size'] as int? ?? 25,
|
||||
hasNext: json['hasNext'] as bool? ?? false,
|
||||
totalItems: json['totalItem'] as int? ?? 0,
|
||||
totalPages: json['totalPage'] as int? ?? 0,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
data,
|
||||
page,
|
||||
size,
|
||||
hasNext,
|
||||
totalItems,
|
||||
totalPages,
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user