我想查看Flutter中的导航堆栈。是否可以使用Navigator该类来打印导航堆栈以及有关Navigator内部内容的其他元信息?
Navigator使用print()方法打印只是给出了Navigator作为字符串。
预期结果: Navigator : { params...., params.... }
我认为您目前可以执行此操作的唯一方法是覆盖Navigator该类并自己跟踪 Routes。
如果您查看Navigator 源代码,有一个名为的变量_history,其中包含所有导航路线,但遗憾的是无法访问它。
也许Navigator的observers参数可以帮助您?虽然它会涉及手动跟踪Navigator. 然后,您可以routeStack根据需要对成员进行操作。
...
Navigator(
observers: [MyNavigatorObserver()],
onGenerateRoute: ...,
)
...
class MyNavigatorObserver extends NavigatorObserver {
List<Route<dynamic>> routeStack = List();
void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
routeStack.add(route);
}
void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
routeStack.removeLast();
}
@override
void didRemove(Route route, Route previousRoute) {
routeStack.removeLast();
}
@override
void didReplace({Route newRoute, Route oldRoute}) {
routeStack.removeLast();
routeStack.add(newRoute);
}
}
Run Code Online (Sandbox Code Playgroud)
黑客就在这里!暂时将以下行添加到您的代码中/调试完成后删除
Navigator.of(context).popUntil((route) { print(route.settings.name); return false; });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1268 次 |
| 最近记录: |