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
相关产品推荐
相关产品推荐

