问题描述
我是Flutter开发的新手。我刚刚开始使用提供程序模式制作Note应用程序,但是当我更新note时,它不会更新,而只是在列表中创建一个新的note。但是当我最小化并返回列表更新时。当我单击该项目时,它显示了旧数据。帮帮我
sqlite_helper.dart
import 'package:sqflite/sqflite.dart' as sql;
import 'package:path/path.dart' as path;
import 'package:sqflite/sqlite_api.dart';
class DBHelper {
static Future<Database> database() async {
final dbPath = await sql.getDatabasesPath();
return sql.openDatabase(path.join(dbPath,'mydatabase.db'),onCreate: (db,version) {
return db.execute(
'CREATE TABLE notes(id TEXT PRIMARY KEY,title TEXT,content TEXT)');
},version: 1);
}
static Future<void> insert(String table,Map<String,Object> data) async {
final db = await DBHelper.database();
db.insert(
table,data,conflictAlgorithm: ConflictAlgorithm.replace,);
}
}
解决方法
NoteProvider没有更新逻辑,这里_items.add(newNote)
将在最后添加一个项目。因此,现有列表项将不会更新。
下面将以示例的方式列出如何更新项目,您仍然可以在此附近找到很多答案。
_items[_items.indexWhere((note) => note.id == newNote.id)] = newNote;