flutter - Flutter Navigator pushAndRemove 帮助(未命名路由)
问题描述
我不在应用程序中使用命名路由。相反,受 FlutterBloc 库的启发,我使用了这样的路由定义。
class OrganizationPage extends StatelessWidget {
static Route route() {
return MaterialPageRoute<void>(builder: (_) => OrganizationPage());
}
// ....
}
我导航使用...
Navigator.push(
context,
LoginPage.route(),
);
假设从加载的角度来看,OrganizationPage
我已经导航了几次。我想要一个按钮,它会弹出 OrganizationPage 路由 + 上面的所有其他内容并加载一个新页面。如何才能做到这一点?
我想过做一些这样的事情......
Navigator.pushAndRemoveUntil(
context,
HomePage.route(),
(Route<dynamic> route) {
// print("Checking route: $route");
// return route.builder.toString().contains("OrganizationPage")
// `builder` is not available, even though it did in the debugger.
},
);
我想做的事能做到吗?如果有怎么办?
我假设如果我使用命名路由可能会更容易?不幸的是,我写了很多代码并且更喜欢避免重构。同样通过这种方式,我可以轻松地接受页面的任何参数。
提前致谢。
解决方案
试过了(Route<dynamic> route) => route.settings.name == "/OrganizationPage"
吗?
更新
使用问题中突出显示的方法不会产生路线名称。但是可以显式提供路由名称。
static Route route() {
return MaterialPageRoute<void>(
builder: (_) => OrganizationPage(),
settings: RouteSettings(name: '/OrganizationPage'),
);
}
现在路由有了名字,我们可以使用
Navigator.pushAndRemoveUntil(
context,
HomePage.route(),
(Route<dynamic> route) => route.settings.name == OrganzationPage.route().settings.name;
);
推荐阅读
- c - 为什么我不能使用结构变量 S 来访问成员
- xml - 用于添加 XML 子元素的 Powershell 脚本
- r - 绘制一个带有对数函数的伽马模型,该模型带有一个带有 ggplot2 的预测器
- c++ - 在 C++ 线性代数库 Eigen3 中是否可以通过值传递和移动?
- python - 在 QTreeView 的 QSortFilterProxyModel 中显示来自 filterAcceptsRow() 的已接受子代但不显示父代
- javascript - 同一行上两种不同形式的按钮
- android - 如何在 Android Studio 中的 Navigation Graph 上切换片段方向
- javascript - 带有接受声明函数的 then 方法的打字稿编码样式
- firebase - 我将我的 Firebase 规则更改为所有经过身份验证的用户。我需要在请求中更改什么 (Flutter)
- java - 如何从列表中删除重复记录并用枚举标记它?