使用对象更新 Sqlite 数据库时,如何解决错误"类型'会话'不是类型'Map<字符串,动态>'的子类型?



我正在尝试用创建时最初发送给它的对象类型更新我拥有的sqlite数据库。当我尝试更新它时,我会不断在问题标题中详细列出错误。为什么我会在更新时得到它,我该如何解决它?它创建了数据库fine并存储了初始数据fine。如果我遗漏了什么,请告诉我!谢谢

我在哪里创建新的Session对象并将其发送到数据库

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;
}

这是我尝试用Session对象更新函数的地方,它会出错

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

我假设您的Session模型类有一个toMap()方法。在更新数据库时,您需要map()您的模型。它应该是这样的:

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

你可以从官方文件中阅读更多内容。

相关内容

最新更新