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

Flutter类型错误:List<UpdateMenuModel>无法赋值给UpdateMenuModel参数

修复Flutter中参数类型不匹配的问题

你遇到的类型错误是因为数据库的insert方法仅接受单个UpdateMenuModel对象,但你传入了List<UpdateMenuModel>类型的变量。根据你的实际需求,有两种修复方式:

方式一:插入单个对象

如果你的data列表中仅需插入一个对象,直接传入列表中的单个元素即可:

// 替换原有的insert调用
updateMenuDatabaseHelper.insert(data.first);

或者你可以直接创建单个对象,无需用List包裹:

UpdateMenuModel singleData = UpdateMenuModel(
  productId: menuData["ProductId"],
  productTitle: menuData["ProductTitle"],
  description: menuData["Description"],
  defaultPrice: menuData["DefaultPrice"],
  isVeg: menuData["DefaultPrice"] == true ? 0 : 1,
  fileName:menuData["FileName"] != null ? menuData["FileName"] : "",
  image: menuData["Image"],
  categoryId: menuData["CategoryId"],
  toppings:menuData["Toppings"] != null ? menuData["Toppings"] : "",
  itemNo: menuData["ItemNo"],
  sizes: menuData["Sizes"],
  isActive: menuData["IsActive"] == true ? 0 : 1,
  isTopping: menuData["IsTopping"] == true ? 0 : 1,
  addedOn: menuData["AddedOn"].toString(),
  isDelete: menuData["IsDelete"] == true ? 0 : 1,
  quantity: menuData["quantity"]
);
updateMenuDatabaseHelper.insert(singleData);

方式二:批量插入多个对象

如果需要一次性插入多个UpdateMenuModel对象,建议给数据库工具类新增一个批量插入方法,使用SQFlite的batch操作提升效率:

修改数据库工具类代码

// 新增批量插入方法
Future<List<UpdateMenuModel>> insertAll(List<UpdateMenuModel> updateMenuModels) async {
  var dbClient = await db;
  var batch = dbClient.batch();
  for (var model in updateMenuModels) {
    batch.insert('updateMenu', model.toJson());
  }
  await batch.commit();
  return updateMenuModels;
}

调用批量插入方法

// 替换原有的insert调用
updateMenuDatabaseHelper.insertAll(data);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:25:06