flutter - 在小部件构建期间如何在颤动中导航?
问题描述
我正在尝试检测该用户不再经过身份验证并将用户重定向到登录。我就是这样做的
Widget build(BuildContext context) {
return FutureBuilder(
future: _getData(context),
builder: (context, snapshot) {
try {
if (snapshot.hasError && _isAuthenticationError(snapshot.error)) {
Navigator.push(context, MaterialPageRoute(builder: (context) => LoginView()));
}
不幸的是,在构建上进行导航不起作用。它抛出这个错误
flutter: setState() or markNeedsBuild() called during build.
flutter: This Overlay widget cannot be marked as needing to build because the framework is already in the
flutter: process of building widgets. A widget can be marked as needing to be built during the build
我不能只返回LoginView
小部件,因为父小部件包含应用栏和浮动按钮,并且登录视图需要在没有这些控件的情况下显示。我需要导航。
有可能做到吗?
解决方案
把它包起来Future.microtask
。这将安排它发生在下一个异步任务周期(即build
完成之后)。
Future.microtask(() => Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoginView())
));
推荐阅读
- reporting-services - 报表页脚文本框 SUM 显示空值而不是数字
- appveyor - Appveyor PR bulid 运行 master 分支
- prolog - Prolog 中的树广度优先
- wso2 - 在 wso2 AM 3.0.0 中配置主动-主动部署
- sql-server - 在 SQL Server 中动态选择表
- javafx - javafx折线图沿网格线展开类别
- docker - 将 $SOURCE_COMMIT 传递给 docker hub 上的 Dockerfile 命令
- javascript - Python 中的 Map 和 Filter 方法
- python - 如何从 python 中的字典中返回特定信息?
- elasticsearch - 相当于 Lucene 查询语法中的 true==true 或 1==1