Как обновить повторяемые значения в таблице sqflite во Flutter

Мне нужен пример того, как обновить повторяемые значения в таблице sqflite во Flutter. Я создал таблицу данных и вставил в нее повторяющиеся значения.

Future callLogDB() async {
    Iterable<CallLogEntry> cLog = await CallLog.get();
    final dbHelper = DatabaseHelper.instance;

    cLog.forEach((log) async {
      // row to insert
      Map<String, dynamic> row = {
        DatabaseHelper.columnName: '${log.name}',
        DatabaseHelper.columnNumber: '${log.number}',
        DatabaseHelper.columnType: '${log.callType}',
        DatabaseHelper.columnDate:
            '${DateTime.fromMillisecondsSinceEpoch(log.timestamp)}',
        DatabaseHelper.columnDuration: '${log.duration}'
      };
      await dbHelper.insert(row);
      print('CallLog:: $row');
    });
    return cLog;
  }

Вот метод вставки:

Future<int> insert(Map<String, dynamic> row) async {
    Database db = await instance.database;
    return await db.insert(table, row);
  }

А вот способ обновления:

Future<int> update(Map<String, dynamic> row) async {
    Database db = await instance.database;
    int id = row[columnId];
    return await db.update(table, row, where: '$columnId = ?', whereArgs: [id]);
  }

Я хочу обновить эту таблицу теми же повторяемыми значениями. как мне это сделать?


person Santo Shakil    schedule 22.06.2020    source источник


Ответы (1)


Наконец-то я нашел решение этой проблемы.

Future callLogDB() async {
Iterable<CallLogEntry> cLog = await CallLog.get();
final dbHelper = DatabaseHelper.instance;

cLog.toList().asMap().forEach((cLogIndex, log) async {
  // row to insert
  Map<String, dynamic> row = {
    DatabaseHelper.columnId: cLogIndex,
    DatabaseHelper.columnName: '${log.name}',
    DatabaseHelper.columnNumber: '${log.number}',
    DatabaseHelper.columnType: '${log.callType}',
    DatabaseHelper.columnDate:
        '${DateTime.fromMillisecondsSinceEpoch(log.timestamp)}',
    DatabaseHelper.columnDuration: '${log.duration}'
  };
  await dbHelper.update(row);
  print('CallLog $cLogIndex:: $row');
});
return cLog;

}

person Santo Shakil    schedule 23.06.2020