嗨,我正尝试将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],
            );
          },
        ),
      ),
    );

我也有一个坏消息,尽管现在数据正在更新,但它暴露了逻辑上的一些缺陷,即在阵列中复制旧条目。你会看到的。那应该很容易解决。

08-18 20:16