firebase - FLUTTER:如何在流构建器中使用导航器?

标签 firebase flutter google-cloud-firestore future stream-builder

我正在尝试在流构建器中导航,但出现此错误:“在构建过程中调用了 setState() 或 markNeedsBuild()。”。如果我在 onpressed 按钮内调用导航它可以工作,但不仅仅是在条件内使用它。我被困住了。有一些代码可以向您展示。

Widget build(BuildContext context) {
    return Scaffold(
      body: StreamBuilder(
        stream:
            Firestore.instance.collection('rooms').document(pinid).snapshots(),
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          if (snapshot.hasData) {
            if ((snapshot.data['Votes'][0] + snapshot.data['Votes'][1]) >=
                snapshot.data['joueurs']) {
              Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (context) => Results(),
                  ));
            }
          }
          return Center(
            child: Text('VOUS AVEZ VOTE'),
          );
        },
      ),
    );
  }

最佳答案

那是因为 Flutter 在您尝试导航到另一个屏幕时会触发框架构建,因此这是不可能的。

您可以安排后帧回调,以便在 Flutter 完成该小部件的树重建后立即导航。

import 'package:flutter/foundation.dart';

  WidgetsBinding.instance.addPostFrameCallback(
     (_) => Navigator.push(context,
       MaterialPageRoute(
         builder: (context) => Results(),
       ),
     ),
   );

关于firebase - FLUTTER:如何在流构建器中使用导航器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59739062/

相关文章:

android - Firebase @Exclude 注释同时适用于 Firestore 和实时数据库?

json - 如何在Fluter上从Firestore中的模型json数据内部序列化/建模

Firebase 邀请 React Native

firebase - Flutter Firebase 身份验证

dart - Flutter:检查 "Ensure you are using Package x.y.z+"要求

javascript - 云函数: Delete file from storage

swift - Firebase 存储上传错误 : "Object albumNum/1 does not exist."

firebase - 如何使用 Google 身份验证防止 Firebase 垃圾邮件注册?

javascript - fb.db.ref() 不是一个函数 - Firebase realtime with Vuejs

flutter - 参数类型 'Products Function(BuildContext, dynamic, dynamic)' 无法分配给参数类型 'Products Function(BuildContext)'