Flutter 颤振:通过路线保持流活动?

Flutter 颤振:通过路线保持流活动?,flutter,google-cloud-firestore,Flutter,Google Cloud Firestore,什么是正确的方法来保持屏幕之间的气流在颤振中打开 例如,如果我有一个Firestore字段(test_字段),我想在两个屏幕上实时更新它,我该如何做?如果我在第一个页面上创建streambuilder,字段的数据会实时更新,但当我将其传递到第二个屏幕(子页面)时,它只会在页面加载时更新: @override Widget build(BuildContext context) { return StreamBuilder<QuerySnapshot>( stream: _theS

什么是正确的方法来保持屏幕之间的气流在颤振中打开

例如,如果我有一个Firestore字段(test_字段),我想在两个屏幕上实时更新它,我该如何做?如果我在第一个页面上创建streambuilder,字段的数据会实时更新,但当我将其传递到第二个屏幕(子页面)时,它只会在页面加载时更新:

@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
  stream: _theStream,
  builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
    if (snapshot.connectionState == ConnectionState.waiting) {
      return Center(
        child: Text("Loading..."),
      );
    } else if (snapshot.data.documents.length != 0) {
      return SingleChildScrollView(
        child: ListView.builder(
          physics: ClampingScrollPhysics(),
          shrinkWrap: true,
          itemCount: snapshot.data.documents.length,
          itemBuilder: (BuildContext context, int index) => MainCard(
                streamData: snapshot.data.documents[index],
              ),
子页面:

class DetailsCard extends StatefulWidget {
DetailsCard({this.streamData});
final streamData;
...
Widget build(BuildContext context) {
Text(widget.streamData.data['test_field'] // This updates in realtime
GestureDetector(
  onTap: () {
    Navigator.push(
      context,
      NoFadeRoute(
        builder: (context) => SubPage(
              streamData: widget.streamData,
            ),
      ),
    );
  },
class SubPage extends StatefulWidget {
SubPage({this.streamData});
final streamData;
...
Widget build(BuildContext context) {
Text(widget.streamData.data['test_field'] // This only updates on page load
非常感谢

推送新路由时,流保持活动状态

问题是,当推送新路由时,将当前值而不是流本身传递给路由

这意味着,新路由不监听流


因此,不要传递
streamData
,而是传递
本身,让
NoFadeRoute
使用
StreamBuilder
收听流。

OK!谢谢你的澄清,现在很有意义了。感谢:)我也有同样的问题,你能给代码示例展示你是如何传递信息的吗?谢谢