import 'package:isar/isar.dart'; import 'unit.dart'; part 'ingredient.g.dart'; @embedded class Ingredient { final String title; List possibleUnits; List preferredBrands; Ingredient({ required this.title, this.possibleUnits = const [], this.preferredBrands = const [], }); factory Ingredient.fromJson(Map json) => Ingredient( title: json['title'] as String, possibleUnits: _unitsFromJson(json['possibleUnits']), preferredBrands: json['preferredBrands'] as List, ); Map toJson() => { 'title': title, 'possibleUnits': possibleUnits.map((e) => e.toJson()).toList(), 'preferredBrands': preferredBrands, }; @override bool operator ==(other) { Ingredient i = other as Ingredient; return title == i.title; } @override int get hashCode { return Object.hash(title, null); } static List _unitsFromJson(List> jsonList) => jsonList.map((e) => Unit.fromJson(e)).toList(); }