更新SQLiteFlutter中的数据

dly7yett  于 2023-03-19  发布在  SQLite
关注(0)|答案(1)|浏览(129)

我有数据,是列表

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
我需要分别增加每个“值”

a1o7rhls

a1o7rhls1#

您的更新条件应更具体,如

(..., where: 'name = ?', whereArgs: [element['name']]);

你所做的就是在每次迭代中更新所有的元素

相关问题