我写的用来在数据库 returns 中获取数据的函数为空。数据库中有数据。在颤动中

The function I wrote to fetch data in the database returns empty. There is data in the database. In flutter

======== widgets库捕获异常================================ ======================= 以下 NoSuchMethodError 被抛出构建 Notlar(脏,状态:_NotlarState#20db1): 在 null 上调用了方法 'notListesiniGetir'。 接收者:空 尝试调用:notListesiniGetir()

Photo-3 代码在这里:

[Future<int> kategoriSil(int kategoriID) async {
    var db= await _getDatabase();
    var sonuc= await db.delete("kategori",  where: 'kategoriID= ?', whereArgs: \[kategoriID\]);
    return sonuc;
  }

  Future<List<Map<String, dynamic>>> notlariGetir() async {
    var db = await _getDatabase();
    var sonuc= await db.rawQuery('select * from "not" inner join kategori on kategori.kategorID = "not".kategoriID;');
    return sonuc;
  }
  Future<List<Not>> notListesiniGetir() async{
    var notlarMapListesi = await notlariGetir();
    var notListesi = List<Not>();
    for(Map map in notlarMapListesi){
      notListesi.add(Not.fromMap(map));

    }
    return notListesi;

  }][1]

错误代码:======== 组件库捕获异常============================= ========================== 以下 NoSuchMethodError 被抛出构建 Notlar(脏,状态:_NotlarState#20db1): 在 null 上调用了方法 'notListesiniGetir'。 接收者:空 尝试调用:notListesiniGetir()

导致错误的相关小部件是: Notlar 文件:///C:/Flutter%20calismalari/not_sepeti/lib/main.dart:63:27 抛出异常时,这是堆栈: #0 Object.noSuchMethod (飞镖:core-patch/object_patch.飞镖:54:5) #1 _NotlarState.build(包:not_sepeti/main.dart:166:30) #2 StatefulElement.build(包:flutter/src/widgets/framework.dart:4802:27) #3 ComponentElement.performRebuild(包:flutter/src/widgets/framework.dart:4685:15) #4 StatefulElement.performRebuild(包:flutter/src/widgets/framework.dart:4857:11) ...

enter image description hereBwg.png

问题不在您的代码中,而是在您的屏幕截图中(您应该将其作为代码片段添加到您的问题中)。

您必须等待条件snapshot.hasData

变化自

If (snapshot.connectionState == ConnectionState.done)

If (snapshot.connectionState == ConnectionState.done && snapshot.hasData)

还有

var notListesi = List<Not>()
List<Not> notListesi = <Not>[ ]; // better

更重要的是,在您的初始状态中删除 DatabaseHelper

DatabaseHelper databaseHelper = DatabaSeHelper();

databaseHelper = DatabaseHelper();

它将起作用。