Flutter ListView不会更新

问题描述

我是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;