嗨,我正尝试将Firebase文档中的数据动态显示到Flutter中,并使用循环将其渲染,因此我制作了List<Widget> Cards
并向其中添加了包含卡片的makeItem()
函数,并将其放入循环中,因此问题是,当我运行代码时,它始终将print(snapshot.connectionState);
输出为ConnectionState.waiting
,并且应该是异步快照,但它拒绝按要求加载数据,我应该提到的是,当我点击“在Android中热重载时,数据按需要显示工作室”。
所以我不知道如何解决这个问题。提前致谢
最佳答案
我想我为您准备了一些东西。它可以在我的模拟器上运行。
List<Widget> cards = [];
Stream<QuerySnapshot> firebaseStream;
@override
void initState() {
super.initState();
firebaseStream = Firestore.instance.collection('Hearings').snapshots();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: StreamBuilder<QuerySnapshot>(
stream: firebaseStream,
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> asyncSnapshot) {
List<DocumentSnapshot> snapData;
if (asyncSnapshot.connectionState == ConnectionState.waiting) {
return Container(
child: Center(
child: CircularProgressIndicator(
backgroundColor: Colors.amber,
strokeWidth: 1,
),
),
);
} else if (asyncSnapshot.connectionState ==
ConnectionState.active) {
snapData = asyncSnapshot.data.documents;
if (asyncSnapshot.hasData) {
for (int i = 0; i < snapData.length; i++) {
Widget card = Text(snapData[i].data['locationName']);
cards.add(card);
}
}
}
return ListView.builder(
itemCount: cards.length,
itemBuilder: (context, index) => cards[index],
);
},
),
),
);
我也有一个坏消息,尽管现在数据正在更新,但它暴露了逻辑上的一些缺陷,即在阵列中复制旧条目。你会看到的。那应该很容易解决。