You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向指定category id对应的分类中插入新的food数据

操作步骤

首先注意你当前定义的_categories用了final修饰,这意味着不能重新给这个变量赋值,但列表内部元素的属性是可修改的,只要你的Category类的food属性没有被final修饰就可以直接操作。

具体操作逻辑如下:

  1. 遍历_categories列表,匹配你需要插入数据的目标分类id
  2. 匹配到对应Category实例后,调用food列表的add方法插入新的Food对象即可

基础实现代码

// 定义要插入的目标分类id
const targetCategoryId = '1';
// 定义要新增的Food实例
final newFood = Food(
  id: '2',
  title: 'Duck',
  description: "新鲜鸭肉",
  price: 68.00,
  image: "对应图片地址",
  choice: [],
);

// 执行插入操作
for (final category in _categories) {
  if (category.id == targetCategoryId) {
    category.food.add(newFood);
    break; // 匹配到目标后直接跳出循环,避免不必要的遍历
  }
}

特殊场景处理

  • 如果你的Category类的food属性被final修饰,无法直接修改列表内容,就需要替换整个Category实例:
for (var i = 0; i < _categories.length; i++) {
  if (_categories[i].id == targetCategoryId) {
    final oldCategory = _categories[i];
    // 基于原有分类信息生成新的分类实例,food列表合并原有数据和新增数据
    _categories[i] = Category(
      id: oldCategory.id,
      title: oldCategory.title,
      food: List.from(oldCategory.food)..add(newFood),
    );
    break;
  }
}
  • 如果你需要更简洁的写法,可以用firstWhere快速匹配目标分类:
final targetCategory = _categories.firstWhere((cat) => cat.id == targetCategoryId);
targetCategory.food.add(newFood);

注意如果不能确定目标分类id一定存在,建议给firstWhere方法添加orElse参数,避免匹配不到时抛出异常。

内容的提问来源于stack exchange,提问作者Justin Uy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:06:08