Flutter 颤振streambuilder中的流是否会自动更新?

Flutter 颤振streambuilder中的流是否会自动更新?,flutter,google-cloud-firestore,stream-builder,Flutter,Google Cloud Firestore,Stream Builder,我决定使用Streambuilder从Firestore获取数据。 但是,当我想要执行动态查询(where或orderBy)(基于文本字段发出的值)时,我的流只显示最初下载的数据。让我认为Streambuilder流不会更改/更新其值,除非数据后端发生更改。这是正确的吗?如果是,我如何在StreamBuilder中更新我的流的值以根据我的查询提取数据?Thx 我还了解到,如果您将流设置在StreamBuilder之外,那么应该将其置于initState或其他位置。我不知道确切的意思。我尝试过这样

我决定使用Streambuilder从Firestore获取数据。 但是,当我想要执行动态查询(where或orderBy)(基于文本字段发出的值)时,我的流只显示最初下载的数据。让我认为Streambuilder流不会更改/更新其值,除非数据后端发生更改。这是正确的吗?如果是,我如何在StreamBuilder中更新我的流的值以根据我的查询提取数据?Thx

我还了解到,如果您将流设置在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);
  }
)
var查询;
变量查询控制器;
...
//文本字段
返回列(
儿童:[
文本字段(
控制器=查询控制器,
),
升起的按钮(
onPressed(){
设置状态(){
query=queryController.text;
});
}  
)
]);
.... 
//具有firestore蒸汽快照的StreamBuilder
孩子:StreamBuilder(
stream:firestore.instance.collection('products')。其中('search_field',isEqualTo:query)。orderBy('timestamp',descending:false)。snapshots();
生成器(上下文、快照){
…//如果有数据,则在小部件中显示数据
返回MyWidget(snapshot.data);
}
)

由于您正在收听
快照()
,因此只要基础数据发生更改,流就会更新。如果这不能转化为屏幕上的更新,则很可能在渲染的下游某个地方出错。但无法根据您提供的信息确定位置。因为您正在收听
snapshots()
,所以只要底层数据发生更改,流就会更新。如果这不能转化为屏幕上的更新,则很可能在渲染的下游某个地方出错。但根据你提供的信息,不可能说出你在哪里。