Flutter 颤振:通过路线保持流活动?
什么是正确的方法来保持屏幕之间的气流在颤振中打开 例如,如果我有一个Firestore字段(test_字段),我想在两个屏幕上实时更新它,我该如何做?如果我在第一个页面上创建streambuilder,字段的数据会实时更新,但当我将其传递到第二个屏幕(子页面)时,它只会在页面加载时更新:Flutter 颤振:通过路线保持流活动?,flutter,google-cloud-firestore,Flutter,Google Cloud Firestore,什么是正确的方法来保持屏幕之间的气流在颤振中打开 例如,如果我有一个Firestore字段(test_字段),我想在两个屏幕上实时更新它,我该如何做?如果我在第一个页面上创建streambuilder,字段的数据会实时更新,但当我将其传递到第二个屏幕(子页面)时,它只会在页面加载时更新: @override Widget build(BuildContext context) { return StreamBuilder<QuerySnapshot>( stream: _theS
@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!谢谢你的澄清,现在很有意义了。感谢:)我也有同样的问题,你能给代码示例展示你是如何传递信息的吗?谢谢