import 'package:freezed_annotation/freezed_annotation.dart'; part 'diets_pagination_model.freezed.dart'; part 'diets_pagination_model.g.dart'; @freezed class DietsPagination with _$DietsPagination { const factory DietsPagination({ @JsonKey(name: "data") required List data, @JsonKey(name: "links") required Links links, @JsonKey(name: "meta") required Meta meta, }) = _DietsPagination; factory DietsPagination.fromJson(Map json) => _$DietsPaginationFromJson(json); } @freezed class Datum with _$Datum { const factory Datum({ @JsonKey(name: "id") required int id, @JsonKey(name: "name") required String name, @JsonKey(name: "image") required String image, @JsonKey(name: "duration") required int duration, @JsonKey(name: "state") required String state, @JsonKey(name: "type") required Type type, @JsonKey(name: "details") required String details, @JsonKey(name: "daily_schedule") required List>> dailySchedule, @JsonKey(name: "author") required Author author, @JsonKey(name: "total_likes") required int totalLikes, @JsonKey(name: "total_views") required int totalViews, @JsonKey(name: "total_comments") required int totalComments, }) = _Datum; factory Datum.fromJson(Map json) => _$DatumFromJson(json); } @freezed class Author with _$Author { const factory Author({ @JsonKey(name: "author_slug") required String authorSlug, @JsonKey(name: "author_name") required String authorName, @JsonKey(name: "author_profile_icon") required String authorProfileIcon, @JsonKey(name: "author_is_me") required bool authorIsMe, }) = _Author; factory Author.fromJson(Map json) => _$AuthorFromJson(json); } @freezed class DailySchedule with _$DailySchedule { const factory DailySchedule({ @JsonKey(name: "name") required String name, @JsonKey(name: "uniq") required String uniq, @JsonKey(name: "portion") required Portion portion, @JsonKey(name: "quantity") required int quantity, }) = _DailySchedule; factory DailySchedule.fromJson(Map json) => _$DailyScheduleFromJson(json); } enum Portion { @JsonValue("grams") GRAMS, @JsonValue("milliliters") MILLILITERS, @JsonValue("pcs") PCS } final portionValues = EnumValues({"grams": Portion.GRAMS, "milliliters": Portion.MILLILITERS, "pcs": Portion.PCS}); @freezed class Type with _$Type { const factory Type({ @JsonKey(name: "alko") bool? alko, @JsonKey(name: "veg") bool? veg, @JsonKey(name: "corb") bool? corb, @JsonKey(name: "meat") bool? meat, }) = _Type; factory Type.fromJson(Map json) => _$TypeFromJson(json); } @freezed class Links with _$Links { const factory Links({ @JsonKey(name: "first") required String first, @JsonKey(name: "last") required String last, @JsonKey(name: "prev") required dynamic prev, @JsonKey(name: "next") required dynamic next, }) = _Links; factory Links.fromJson(Map json) => _$LinksFromJson(json); } @freezed class Meta with _$Meta { const factory Meta({ @JsonKey(name: "current_page") required int currentPage, @JsonKey(name: "from") required int from, @JsonKey(name: "last_page") required int lastPage, @JsonKey(name: "links") required List links, @JsonKey(name: "path") required String path, @JsonKey(name: "per_page") required int perPage, @JsonKey(name: "to") required int to, @JsonKey(name: "total") required int total, }) = _Meta; factory Meta.fromJson(Map json) => _$MetaFromJson(json); } @freezed class Link with _$Link { const factory Link({ @JsonKey(name: "url") required String? url, @JsonKey(name: "label") required String label, @JsonKey(name: "active") required bool active, }) = _Link; factory Link.fromJson(Map json) => _$LinkFromJson(json); } class EnumValues { Map map; late Map reverseMap; EnumValues(this.map); Map get reverse { reverseMap = map.map((k, v) => MapEntry(v, k)); return reverseMap; } }