我有数据,是列表
static List<Map<String, dynamic>> defaultProducts = [
{
'name': 'product 1',
'value': 0,
'price': 0.0,
'selected': 'false',
'purchase': 'false'
},
{
'name': 'product 2',
'value': 3,
'price': 570.0,
'selected': 'true',
'purchase': 'false'
},
{
'name': 'product 3',
'value': 2,
'price': 980.0,
'selected': 'true',
'purchase': 'false'
},
];
}
我处理并过滤这些数据。
结果,我得到了一个过滤后的列表。
我选择具有属性**“selected”的对象:“正确”,**
我需要做一个函数,它将value递增1并更新'price':0.0,
我尝试使用forEach,我的代码
static Future<List<Map<String, dynamic>>> getSelectedData() async {
final db = await SQLHelper.db();
return db.query(
'data',
orderBy: 'value',
where: 'selected = ?',
whereArgs: ['true'],
);
}
Future<void> _updateSelectedProd() async {
final db = await SQLHelper.db();
final _data = await SQLHelper.getSelectedData();
_data.forEach((element) async {
final data = {
'price': 0.0,
'value': int.parse(element['value']) + 1,
};
db.update('data', data, where: 'selected = ?', whereArgs: ['true']);
});
_refreshSelectedData();
_calcSumPrices();
}
这个请求有效,但问题是为每个元素添加了相同的数字,执行后,每个元素的值都为4
我需要分别增加每个“值”
1条答案
按热度按时间a1o7rhls1#
您的更新条件应更具体,如
你所做的就是在每次迭代中更新所有的元素