我有一个名为 RecipeModel
的模型,它基本上包含有关食谱的详细信息(recipeName、recipeAuthor 等)。
现在我希望用户将任何食谱标记为最喜欢的,这基本上是一个 RecipeModel 列表。
这是我的FavoriteRecipeModel
:
class FavoriteRecipeModel {
List<RecipeModel>? recipeList;
FavoriteRecipeModel({this.recipeList});
factory FavoriteRecipeModel.fromJson(Map<String, dynamic> json) =>
FavoriteRecipeModel(
recipeList: json["recipeList"] == null ? null : json["recipeList"],
);
Map<String, dynamic> toJson() => {
"recipe": recipeList == null ? null : recipeList,
};
}
这是我打算在我的 recipe_details_screen 中使用它的方式:
class RecipeDetailsScreen extends StatefulWidget {
final RecipeModel? recipe;
RecipeDetailsScreen({required this.recipe});
@override
_RecipeDetailsScreenState createState() => _RecipeDetailsScreenState();
}
class _RecipeDetailsScreenState extends State<RecipeDetailsScreen> {
FavoriteRecipeModel favoriteRecipeList = FavoriteRecipeModel();
void addToFavorites() {
favoriteRecipeList.recipeList!.add(widget.recipe!);
}
......some other widgets
}
问题是每当我尝试调用 addToFavorites
方法时都会收到此错误:
Null check operator used on a null value
我的计划是将已传递到此页面的 recipeModel 添加到列表中,然后使用 Hive 将列表保存在本地存储中的 json 文件中。
但我不明白如何解决错误。
更新 1:
我将模型更改为
List<RecipeModel>? recipeList = [];
在我的 details_screen 中:
FavoriteRecipeModel favoriteRecipeList = FavoriteRecipeModel(); favoriteRecipeList.recipeList!.add(widget.recipe!);
但仍然得到空检查错误
答案 0 :(得分:2)
您正在尝试向不存在的列表添加值。
List<RecipeModel>? recipeList;
当你打电话时:
favoriteRecipeList.recipeList!.add(widget.recipe!);
recipeList 未初始化。
你可以默认为空:
List<RecipeModel>? recipeList = [];
或者在实例化类时传递一个空列表:
List<RecipeModel> emptyList = [];
FavoriteRecipeModel favoriteRecipeList = FavoriteRecipeModel(emptyList);