import 'dart:convert'; import 'package:kulinar_app/models/recipe_class.dart'; import 'package:kulinar_app/util/isar_handler.dart'; class RecipeData { static List remoteRecipeList = []; static List recipeList = []; static Future save() async { for (Recipe recipe in recipeList) { IsarHandler().save(recipe); } } static Future load() async { List list = await IsarHandler().load(); for (Recipe? recipe in list) { recipeList.add(recipe!); } } static String encode() { List> _tempList = []; recipeList.forEach((element) { Map _map = Map(); _map["title"] = element.title; _map["description"] = element.description; _map["favorite"] = element.favorite; _map["rating"] = element.rating; _map["image"] = element.image; _tempList.add(_map); }); return jsonEncode(_tempList); } static void decode(String data) { final _result = jsonDecode(data); if (_result.isEmpty) return; recipesIdentical(Recipe a, Recipe b) { if (a.title != b.title) return false; if (a.description != b.description) return false; return true; } _result.forEach((item) { Recipe recipe = Recipe( title: item["title"], description: item["description"], favorite: item["favorite"], rating: item["rating"], image: item["image"], ); if (RecipeData.recipeList.where((element) => recipesIdentical(element, recipe)).isEmpty) recipeList.add(recipe); }); save(); } }