Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振列表视图赢得';t更新_Flutter_Dart_Flutter Provider_Sqflite - Fatal编程技术网

Flutter 颤振列表视图赢得';t更新

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

我对颤振开发还不熟悉。我刚开始用提供者模式制作便笺应用程序,但当我更新便笺时,它不会更新,只会在列表中创建一个新便笺。但当我最小化并返回时,列表会更新。当我单击该项时,它会显示旧数据。帮帮我

sqlite\u助手.省道

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,那么为什么不替换注释呢?也就是说,对于数据库而不是提供程序类,提供程序局部变量也应该更新。你能投票接受答案吗?