我整个周末都在努力解决这个问题,所以我最终决定征求你的意见。
有一个流构建器,它监听流或食谱(按类别 -> 汤、沙漠等过滤)。
我很困惑,因为文本“Nothing”(最后一个返回语句)是唯一显示的内容,即使我在 if 条件中的打印语句要求 connectionstate.active 显示所有值。
当我在文本小部件“Nothing”上方的一行打印连接状态时,我得到“活动”。
当然,我可以摆脱我的 if 语句并将返回的小部件放在最后,但我想知道和理解,为什么我的 .active 条件下的 return 语句没有显示列等,即使打印语句显示在控制台中。
顺便说一句,我看到很多其他资源都使用了 Listview,但我不确定天气是否可以将 Listview 与堆栈一起使用(因为我想在彼此之上显示数据)。
期待您的回复!
问候托马斯
new StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance.collection("rezepte").where("kategorie", isEqualTo: ausgewaehlteKategorie).snapshots(),
builder: (context, AsyncSnapshot<QuerySnapshot> snapshot){
print("***** STREAMBUILDER *****");
if (snapshot.connectionState == ConnectionState.waiting) {
print(snapshot.connectionState);
return CircularProgressIndicator();
}
if(snapshot.connectionState == ConnectionState.active){
print(snapshot.connectionState);
print(snapshot.data!.docs);
print(snapshot.data!.docs[0]["name"]);
print(snapshot.data!.docs[0]["kategorie"]);
print(snapshot.data!.docs.length);
snapshot.data!.docs.map((docs){
print("Test1");
listeAllerRezepte.add(
Rezept(
name: docs["name"].toString(),
kategorie: docs["kategorie"].toString(),
naehrwertKohlenhydrate: docs["naehrwertKohlenhydrate"],
naehrwertFett: docs["naehrwertFett"],
naehrwertEiweiss: docs["naehrwertEiweiss"],
naehrwertKohlenhydrateProzent: double.parse((100 / (docs["naehrwertKohlenhydrate"] + docs["naehrwertFett"] + docs["naehrwertEiweiss"]) * docs["naehrwertKohlenhydrate"]).toStringAsFixed(2)),
naehrwertFettProzent: double.parse((100 / (docs["naehrwertKohlenhydrate"] + docs["naehrwertFett"] + docs["naehrwertEiweiss"]) * docs["naehrwertFett"]).toStringAsFixed(2)),
naehrwertEiweissProzent: double.parse((100 / (docs["naehrwertKohlenhydrate"] + docs["naehrwertFett"] + docs["naehrwertEiweiss"]) * docs["naehrwertEiweiss"]).toStringAsFixed(2)),
img: docs["img"],
favorit: docs["favorit"]
)
);
print("Test2");
print(listeAllerRezepte[0]);
print(listeAllerRezepte[0].name.toString());
print(listeAllerRezepte[0].kategorie.toString());
print(listeAllerRezepte[0].img.toString());
return new Column(
children: [
new Stack(
alignment: Alignment.bottomCenter,
children: [
new Text("Test1"),
new Container(
child: new GestureDetector(
child: new Column(
children: [
new Text("TEST"),
new Image(
image: (docs["img"].toString().length > 0) ? NetworkImage(docs["img"].toString()) : NetworkImage(globals.listeAllerKategorien![nummerAusgewaehleKategorie].img.toString())
),
],
),
onTap: () {
},
),
),
new Divider(height: 100.0)
],
),
new Divider(height: 15.0)
]
);
}).toList();
}
if(snapshot.connectionState == ConnectionState.done){
print(snapshot.connectionState);
}
if(!snapshot.hasData){
return Text("Loading");
}
return new Text("Nothing");
}
)