Как вы устраняете ошибку «тип ‘Session’ не является подтипом типа ‘Map’ при обновлении базы данных Sqlite с помощью объекта?

#sqlite #flutter #flutter-dependencies

#sqlite #flutter #flutter-зависимости

Вопрос:

Я пытаюсь обновить имеющуюся у меня базу данных sqlite с типом объекта, который был первоначально отправлен ей при ее создании. Когда я пытаюсь его обновить, я продолжаю получать ошибку, подробно описанную в заголовке вопроса. Почему я получаю это при обновлении и как мне это исправить? Он создал БД нормально и сохранил исходные данные нормально. Если я что-то пропустил, дайте мне знать! Спасибо!

Где я создаю новый объект сеанса и отправляю его для обновления базы данных

 onTap: () {
Session session = new Session();
session.selectedQuarterStatus = quarter[index].status;
session.selectedQuarter = quarter[index].quarter;
SessionDBProvider.sessionDB.updateSession(session);
Navigator.pop(context);
},
  

Именно здесь создается БД. Ничего сумасшедшего

   newSession(Session newSession) async {
    final db = await database;

    var res = await db.rawInsert('''
    INSERT INTO session (
      selected_quarter, status
    ) VALUES (?, ?)
    ''', [
      newSession.selectedQuarter,
      newSession.selectedQuarterStatus
    ]);

    return res;
  }
  

Здесь я пытаюсь обновить функцию с помощью объекта сеанса, и она выдает ошибку

   Future<dynamic> updateSession(session) async {
    final db = await database;
    var res = await db.update("session", session);
  }
  

Ответ №1:

Я предполагаю, что у вашего класса модели сеанса есть toMap() метод. Вам нужна map() ваша модель при обновлении базы данных. Это должно выглядеть так:

 Future<dynamic> updateSession(session) async {
  final db = await database;
  var res = await db.update("session", session.toMap());
}
  

Вы можете прочитать больше из официального документа.