У меня есть 2 базы данных. Один для папок и один для заметок. База данных папок содержит заголовок и строку json списка идентификаторов. Идентификаторы должны представлять вторую базу данных заметок. В основном папки должны содержать список заметок, и это лучший способ, который я нашел до сих пор. Моя проблема в том, что когда я создаю новую заметку и вставляю ее в базу данных, я не знаю, как вернуть идентификатор новой заметки.
Если я установлю идентификатор при создании заметки, все заметки будут иметь одинаковый идентификатор. Если я не установлю идентификатор, вызов note.id вернет значение null. На основе моей функции создания идентификатор заметки должен установить себя (id INTEGER PRIMARY KEY AUTOINCREMENT)
Моя идея заключается в том, что при создании новой заметки я бы как-то вернул инт id, чтобы я мог легко вставить его в папку. Вот что у меня есть до сих пор.
void addNewNote(Note note) async {
var db_connection = await db;
String query =
'INSERT INTO Note(title, content, date_created, date_last_edited) VALUES(\'${note.title}\', \'${note.content}\', \'${note.date_created}\', \'${note.date_last_edited}\')';
await db_connection.transaction((transaction) async {
return await transaction.rawInsert(query);
});
}

Вы должны иметь возможность получить идентификатор из rawInsert следующим образом:
final noteId = await transaction.rawInsert(query);
по документам: https://pub.dev/packages/sqflite#raw-sql-запросы
Вместо того, чтобы хранить строковый список идентификаторов в таблице папок, вы также можете попробовать сохранить folder_id в таблице заметок в качестве внешнего ключа: https://sqlite.org/foreignkeys.html
Вставленный идентификатор также возвращается вспомогательным методом db.insert() в качестве подписи.
Future<int> insert(String table, Map<String, dynamic> values,
{String nullColumnHack, ConflictAlgorithm conflictAlgorithm})
описывает. Пример:
final db = await getDb();
final insertedId = await db.insert(
todosTableName,
todo.toMap(),
conflictAlgorithm: ConflictAlgorithm.replace,
);
print('insertedId: $insertedId');