首页 > 解决方案 > 流生成器不经常更新

问题描述

我正在尝试流式传输评论(您可以在代码中看到)。但是流生成器没有更新,但是当我进行热重载时,它会显示数据。我无法理解为什么流生成器仅在热重载后才显示数据?

我试过了,但我不明白为什么流构建器会出现这种行为

StreamBuilder(
              stream: reference
                  .where("post_id", isEqualTo: widget.postModel.uid)
                  .orderBy("created", descending: true)
                  .snapshots(),
              builder: (context, snapshot) {
                var postList =
                    snapshot.hasData ? snapshot.data.documents : null;
                print("size: $postList");
                return (snapshot != null &&
                        (!snapshot.hasData || postList.length == 0))
                    ? Padding(
                        padding: const EdgeInsets.all(16.0),
                        child: Text(
                          "No comments yet",
                          style: TextStyle(
                            fontSize: 16,
                          ),
                        ),
                      )
                    : ListView.builder(
                        shrinkWrap: true,
                        itemCount: postList.length,
                        physics: NeverScrollableScrollPhysics(),
                        itemBuilder: (context, index) {
                          Map<String, dynamic> dataMap =
                              postList[index].data;
                          return Container(
                            padding: EdgeInsets.all(16),
                            child: Column(
                              mainAxisAlignment: MainAxisAlignment.start,
                              crossAxisAlignment: CrossAxisAlignment.start,
                              mainAxisSize: MainAxisSize.min,
                              children: <Widget>[
                                Row(
                                  children: <Widget>[
                                    Icon(
                                      Icons.tag_faces,
                                      color: Colors.black45,
                                    ),
                                    SizedBox(
                                      width: 8,
                                    ),
                                    Text(
                                      dataMap["name"],
                                      style: TextStyle(
                                          fontSize: 16,
                                          color: Colors.black54,
                                          fontWeight: FontWeight.bold),
                                    ),
                                  ],
                                ),
                                SizedBox(
                                  height: 4,
                                ),
                                Text(
                                  dataMap["comment"],
                                  style: TextStyle(
                                      fontSize: 16, color: Colors.black),
                                ),
                              ],
                            ),
                          );
                        });
              })

标签: flutter

解决方案


TL;博士

重构(简化)您的小部件树。

有时它是因为小部件树而发生的。尝试通过分析同一屏幕的小部件树来重构。这就像您的流构建器无法保持自身更新(即它不会不断检查后端中的数据更改,因为它失去了焦点或保持更新的东西。)


推荐阅读