forked from eatvio/eatvio_app
134 lines
4.1 KiB
Dart
134 lines
4.1 KiB
Dart
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<Datum> data,
|
|
@JsonKey(name: "links") required Links links,
|
|
@JsonKey(name: "meta") required Meta meta,
|
|
}) = _DietsPagination;
|
|
|
|
factory DietsPagination.fromJson(Map<String, dynamic> 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<List<List<DailySchedule>>> 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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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<Link> 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<String, dynamic> 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<String, dynamic> json) => _$LinkFromJson(json);
|
|
}
|
|
|
|
class EnumValues<T> {
|
|
Map<String, T> map;
|
|
late Map<T, String> reverseMap;
|
|
|
|
EnumValues(this.map);
|
|
|
|
Map<T, String> get reverse {
|
|
reverseMap = map.map((k, v) => MapEntry(v, k));
|
|
return reverseMap;
|
|
}
|
|
}
|