flutter - Flutter StreamBuilder 中的 Stream 是否会自行更新?
问题描述
我决定使用 Streambuilder 从 Firestore 获取数据。但是,当我想做一个动态的查询(where 或 orderBy)(基于文本字段发出的值)时,我的流只显示最初下载的数据。让我认为 Streambuilder 流不会更改/更新它的值,除非数据后端发生更改。这个对吗?如果是,我如何更新 StreamBuilder 中流的值以根据我的查询提取数据?谢谢。
我还读到您将流设置在 StreamBuilder 之外,应该放在 initState 或其他东西中。我不确定确切的含义。我尝试这样做,但是如果将流放在 initState 中,则不会通过变量将流传递给 streambuilder 流。
示例代码:
var query;
var queryController;
...
//TextField
return Column(
children: [
TextField(
controller = queryController,
),
RaisedButton(
onPressed() {
setState(() {
query = queryController.text;
});
}
)
]);
....
//StreamBuilder with firestore steam snapshot
child: StreamBuilder<QuerySnapshot>(
stream: firestore.instance.collection('products').where('search_field', isEqualTo: query).orderBy('timestamp', descending: false).snapshots();
builder (context, snapshot) {
... //if has data, show data the widget
return MyWidget(snapshot.data);
}
)
解决方案
推荐阅读
- python-3.x - 如何检查目录访问属性(权限)?
- angular - 如何在圆环图中的值上设置最小宽度?
- kubernetes - 如何使自动集群升级工作 GKE/digitalocean 用于具有不同请求内存要求的作业类型?
- html - 滚动条显示在 chrome 扩展默认弹出窗口中
- javascript - 在服务中使用 Ember 事件发布/订阅事件
- computer-science - 是否有必要从不包含左递归的 CFG(上下文无关语法)创建解析树?
- javascript - 占位符出现显示问题
- python - Python:检查解析的日期时间是否具有正确的时区
- c# - WinForms DataGridView 在列出图像时没有响应
- java - 具有公共 IP 地址的 DatagramSocket