170 lines
4.0 KiB
Dart
170 lines
4.0 KiB
Dart
import 'package:json_annotation/json_annotation.dart';
|
|
|
|
part 'machine.g.dart';
|
|
|
|
enum MachineType {
|
|
@JsonValue('Espresso')
|
|
espresso,
|
|
@JsonValue('Drip')
|
|
drip,
|
|
@JsonValue('Percolation')
|
|
percolation,
|
|
@JsonValue('French Press')
|
|
frenchPress,
|
|
@JsonValue('Cold Brew')
|
|
coldBrew,
|
|
@JsonValue('E61')
|
|
e61,
|
|
@JsonValue('Pod')
|
|
pod,
|
|
@JsonValue('Espresso Pod')
|
|
espressoPod,
|
|
@JsonValue('Grinder')
|
|
grinder,
|
|
}
|
|
|
|
@JsonSerializable()
|
|
class Portafilter {
|
|
final String id;
|
|
final String size;
|
|
final String material;
|
|
|
|
Portafilter({required this.id, required this.size, required this.material});
|
|
|
|
factory Portafilter.fromJson(Map<String, dynamic> json) =>
|
|
_$PortafilterFromJson(json);
|
|
Map<String, dynamic> toJson() => _$PortafilterToJson(this);
|
|
}
|
|
|
|
@JsonSerializable()
|
|
class Machine {
|
|
final String id;
|
|
final String manufacturer;
|
|
final int year;
|
|
final String model;
|
|
final MachineType type;
|
|
final bool steamWand;
|
|
final String details;
|
|
final bool isOwned;
|
|
final double rating;
|
|
final int popularity;
|
|
final List<Portafilter> portafilters;
|
|
final Map<String, dynamic> specifications;
|
|
|
|
Machine({
|
|
required this.id,
|
|
required this.manufacturer,
|
|
required this.year,
|
|
required this.model,
|
|
required this.type,
|
|
required this.steamWand,
|
|
required this.details,
|
|
required this.isOwned,
|
|
required this.rating,
|
|
required this.popularity,
|
|
required this.portafilters,
|
|
required this.specifications,
|
|
});
|
|
|
|
factory Machine.fromJson(Map<String, dynamic> json) =>
|
|
_$MachineFromJson(json);
|
|
Map<String, dynamic> toJson() => _$MachineToJson(this);
|
|
}
|
|
|
|
@JsonSerializable()
|
|
class EspressoMachine extends Machine {
|
|
final String boilerType;
|
|
final String capacity;
|
|
final String? grinder;
|
|
final String heatSourceDescription;
|
|
final bool hopper;
|
|
final bool isDosing;
|
|
final int maxPressureBars;
|
|
final bool pressureGaugeIncluded;
|
|
final bool programmable;
|
|
final bool usesLever;
|
|
final int waterCapacity;
|
|
final Portafilter? portafilter;
|
|
|
|
EspressoMachine({
|
|
required super.id,
|
|
required super.manufacturer,
|
|
required super.year,
|
|
required super.model,
|
|
required super.type,
|
|
required super.steamWand,
|
|
required super.details,
|
|
required super.isOwned,
|
|
required super.rating,
|
|
required super.popularity,
|
|
required super.portafilters,
|
|
required super.specifications,
|
|
required this.boilerType,
|
|
required this.capacity,
|
|
this.grinder,
|
|
required this.heatSourceDescription,
|
|
required this.hopper,
|
|
required this.isDosing,
|
|
required this.maxPressureBars,
|
|
required this.pressureGaugeIncluded,
|
|
required this.programmable,
|
|
required this.usesLever,
|
|
required this.waterCapacity,
|
|
this.portafilter,
|
|
});
|
|
|
|
factory EspressoMachine.fromJson(Map<String, dynamic> json) =>
|
|
_$EspressoMachineFromJson(json);
|
|
@override
|
|
Map<String, dynamic> toJson() => _$EspressoMachineToJson(this);
|
|
}
|
|
|
|
@JsonSerializable()
|
|
class DripCoffee extends Machine {
|
|
final String brewerType;
|
|
final bool caraffe;
|
|
final String filterType;
|
|
final bool programmable;
|
|
|
|
DripCoffee({
|
|
required super.id,
|
|
required super.manufacturer,
|
|
required super.year,
|
|
required super.model,
|
|
required super.type,
|
|
required super.steamWand,
|
|
required super.details,
|
|
required super.isOwned,
|
|
required super.rating,
|
|
required super.popularity,
|
|
required super.portafilters,
|
|
required super.specifications,
|
|
required this.brewerType,
|
|
required this.caraffe,
|
|
required this.filterType,
|
|
required this.programmable,
|
|
});
|
|
|
|
factory DripCoffee.fromJson(Map<String, dynamic> json) =>
|
|
_$DripCoffeeFromJson(json);
|
|
@override
|
|
Map<String, dynamic> toJson() => _$DripCoffeeToJson(this);
|
|
}
|
|
|
|
@JsonSerializable()
|
|
class Grinder {
|
|
final String id;
|
|
final String burrType;
|
|
final int grindSettingsCount;
|
|
|
|
Grinder({
|
|
required this.id,
|
|
required this.burrType,
|
|
required this.grindSettingsCount,
|
|
});
|
|
|
|
factory Grinder.fromJson(Map<String, dynamic> json) =>
|
|
_$GrinderFromJson(json);
|
|
Map<String, dynamic> toJson() => _$GrinderToJson(this);
|
|
}
|