flutter - 流生成器不经常更新
问题描述
我正在尝试流式传输评论(您可以在代码中看到)。但是流生成器没有更新,但是当我进行热重载时,它会显示数据。我无法理解为什么流生成器仅在热重载后才显示数据?
我试过了,但我不明白为什么流构建器会出现这种行为
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),
),
],
),
);
});
})
解决方案
TL;博士
重构(简化)您的小部件树。
有时它是因为小部件树而发生的。尝试通过分析同一屏幕的小部件树来重构。这就像您的流构建器无法保持自身更新(即它不会不断检查后端中的数据更改,因为它失去了焦点或保持更新的东西。)
推荐阅读
- c++ - bool Book::isEmpty() const 遇到问题
- php - 如何解决 PHP 警告:使用未定义的常量用户 ID
- amazon-web-services - 更新 AWS EC2 实例的问题
- c# - 在 c# mono app 中通过 localhost/127.0.0.1 连接到本地 MariaDB MySQL Linux 服务器的 mysql 出现问题
- qt - QML 网格布局问题
- java - 非对称加密字符串,将加密后的字符串和公钥保存到属性文件以供不同程序读取
- python - Python 2.7 - 将自定义对象添加到列表然后打印出属性打印随机值
- c++ - 如何在 GridFS 中设置“contentType”字段?
- python - 为什么程序不打印斐波那契数列?
- javascript - 使用 Angular 5 在 Firebase 中存储数据时无法读取未定义的属性“推送”