Flutter 颤振列表视图赢得';t更新
我对颤振开发还不熟悉。我刚开始用提供者模式制作便笺应用程序,但当我更新便笺时,它不会更新,只会在列表中创建一个新便笺。但当我最小化并返回时,列表会更新。当我单击该项时,它会显示旧数据。帮帮我 sqlite\u助手.省道Flutter 颤振列表视图赢得';t更新,flutter,dart,flutter-provider,sqflite,Flutter,Dart,Flutter Provider,Sqflite,我对颤振开发还不熟悉。我刚开始用提供者模式制作便笺应用程序,但当我更新便笺时,它不会更新,只会在列表中创建一个新便笺。但当我最小化并返回时,列表会更新。当我单击该项时,它会显示旧数据。帮帮我 sqlite\u助手.省道 import 'package:sqflite/sqflite.dart' as sql; import 'package:path/path.dart' as path; import 'package:sqflite/sqlite_api.dart'; class DBHe
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,
);
}
}
import'包:sqflite/sqflite.dart'作为sql;
导入“package:path/path.dart”作为路径;
导入“包:sqflite/sqlite_api.dart”;
类DBHelper{
静态未来数据库()异步{
final dbPath=wait sql.getDatabasesPath();
返回sql.openDatabase(path.join(dbPath,'mydatabase.db'),
onCreate:(数据库,版本){
返回db.execute(
'创建表注释(id文本主键、标题文本、内容文本)';
},版本:1);
}
静态未来插入(字符串表、映射数据)异步{
final db=await DBHelper.database();
db.insert(
桌子
数据,
conflictAlgorithm:conflictAlgorithm.replace,
);
}
}
NoteProvider没有更新逻辑,此处为\u项。添加(newNote)
将在末尾添加项。因此,现有列表项不会得到更新
下面将是一个如何列表项目可以更新的例子,你仍然可以围绕这个有很多答案可用
_items[_items.indexWhere((note) => note.id == newNote.id)] = newNote;
您还没有编写任何更新查询,yetI认为conflictAlgorithm将用新的contentya替换它。这是可行的,conflictAlgorithm:conflictAlgorithm.replace,那么为什么不替换注释呢?也就是说,对于数据库而不是提供程序类,提供程序局部变量也应该更新。你能投票接受答案吗?