Merhaba arkadaşlar, Firebase’den veri çekerken aşağıdaki hatayı alıyorum, bir türlü çözemedim, çözümü nedir?

The function can’t be unconditionally invoked because it can be ‘null’.
Try adding a null check (‘!’).

Kodlarım aşağıdadır. (Kalın yazılan yerler hata veriyor.)

return Scaffold(
appBar: AppBar(
title: Text("Personel Listesi"),
backgroundColor: Colors.redAccent[400],
actions: <Widget>[
IconButton(
icon: Icon(Icons.home),
onPressed: () {
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(builder: (_) => WelcomePage()),
(route) => true);
},
),
],
),
body: Container(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: Column(
children: [
StreamBuilder<QuerySnapshot>(
stream: staffRef.snapshots(),
builder: (BuildContext context, AsyncSnapshot asyncSnapshot) {
if (asyncSnapshot.hasError) {
return Center(
child: Text(
"Bir hata oluştu, lütfen tekrar deneyiniz."));
} else {
if (asyncSnapshot.hasData) {
List<DocumentSnapshot> listStaff =
asyncSnapshot.data.docs;
return Flexible(
child: ListView.builder(
itemBuilder: (context, index) {
return Card(
elevation: 20,
color: Colors.greenAccent[200],
child: ListTile(
trailing: IconButton(
icon: Icon(Icons.delete),
onPressed: () async {
await listStaff[index]
.reference
.delete();
},
),
title: Text(
**'${listStaff[index].data()['nameSurname']}',**
style: TextStyle(fontSize: 20),
),
subtitle: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
Text(
**'${listStaff[index].data()['tip']}',**
style: TextStyle(fontSize: 14),
),
],
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
Text(
**'${listStaff[index].data()['mail']}',**
style: TextStyle(fontSize: 14),
),
],
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
Text(
**'${listStaff[index].data()['phone']}',**
style: TextStyle(fontSize: 14),
),
],
),
],
),
),
);
},
itemCount: listStaff.length),
);
} else {
return Center(
child: CircularProgressIndicator(),
);
}
}
},
),
],
),
),
),
),
);
}
}

    hocam başta null kontrolü yapman gerekiyor.
    yukarıda StreamBuilderda builderın içine şunu eklemeyi bir dener misin?
    if(asyncSnapshot.data==null){return Center(child: Text("Bilgi gelmedi, lütfen tekrar deneyiniz."));} }

    hocam buraya aktarımın baya kötü olmuş. yapı çok karışık görünüyor. hiyerarşik yapıyı biraz daha düzenleyip atabilirsen üzerine biraz daha bakabilirim. yalnız null kontrolü yapmadığını gördüm. yaptığın halde olmadıysa muhtemelen veritabanındaki bilgi gelmeden uygulama bilgiyi okumaya çalışıyor ve okuyamadığından null dönüyor. şunu yapmayı deneyebilirsin bir de.

    return Flexible(
    child: ListView.builder(
    itemBuilder: (context, index) {
        final map = querySnapshot.docs[index].data();

    hata altığın :

    title: Text(
    **'${listStaff[index].data()['nameSurname']}',**
    style: TextStyle(fontSize: 20),
    ),

    yerine de
    title: Text(
    map[nameSurname],
    style: TextStyle(fontSize: 20),
    ),
    kullanabilirsin. ben genelde **querysnapshot**olan veriyi önce **map**e dönüştürüp sonra yazdırıyorum.

      11 days later

      son Flutter güncelemesinden sonra .data() kullanmaya gerek yokmuş, hata veren kodlarımı aşağıdaki şekilde düzenleyince hata sonlandı. Herkese ilgi ve alakalarından dolayı teşekkür ederim.
      title: Text(
      '${listPersonel[index]['nameSurname']}',
      style: TextStyle(fontSize: 20),
      ),

      Write a Reply...