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 = []; for (Recipe recipe in recipeList) { Map map = {}; map["title"] = recipe.title; map["description"] = recipe.description; map["favorite"] = recipe.favorite; map["rating"] = recipe.rating; map["image"] = recipe.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(); } }