import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:aesthetica_wallpaper/models/recipe.dart'; class RecipeProvider with ChangeNotifier { final String _storageKey = "aesthetica_recipes"; List _recipes = []; List get recipes => _recipes; // 从 SharedPreferences 加载配方 Future loadRecipes() async { final prefs = await SharedPreferences.getInstance(); final List recipeStrings = prefs.getStringList(_storageKey) ?? []; _recipes = recipeStrings .map((str) => Recipe.fromJsonString(str)) .toList() .reversed .toList(); // 反转,让最新的在最前面 notifyListeners(); } // 保存所有配方到 SharedPreferences Future _save() async { final prefs = await SharedPreferences.getInstance(); final List recipeStrings = _recipes .map((r) => r.toJsonString()) .toList(); await prefs.setStringList(_storageKey, recipeStrings); } // 添加一个新配方 Future addRecipe(Recipe recipe) async { // 确保 ID 是唯一的 recipe.id = DateTime.now().millisecondsSinceEpoch.toString(); _recipes.insert(0, recipe); // 插入到最前面 await _save(); notifyListeners(); } // 删除一个配方 Future deleteRecipe(String id) async { _recipes.removeWhere((r) => r.id == id); await _save(); notifyListeners(); } }