我决定使用 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);
}
)