我正在尝试在流构建器中导航,但出现此错误:“在构建过程中调用了 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/