【发布时间】:2020-07-22 23:20:55
【问题描述】:
我在 Flutter 中看到了一个示例,您可以在不访问 BuildContext 的情况下导航路线。
final GlobalKey<NavigatorState> _navKey = new GlobalKey<NavigatorState>();
navigatorKey.currentState.pushNamed('/');
使用这种方法对我的所有应用程序进行导航有什么缺点吗?
【问题讨论】:
-
全局键相对昂贵。如果访问
context是您这样做的唯一原因,那么您尝试推送路由的方式可能存在问题。 -
“相对”。颤振文档说在帧重绘上使用 GlobalKey 时相对昂贵。但是导航屏幕不在热门路径中,而且相对便宜。
-
GlobalKeys 的“昂贵”部分与简单地读取小部件的状态无关。我打开了一个更新文档的 PR。
-
@RémiRousselet 可以链接 PR 吗?
-
对于
Navigator,这可能没问题。当您有 2 个Navigator(cupertino) 实例时,这是值得商榷的,但除此之外还可以。总体而言,GlobalKeys 的真正问题在于它们违反了小部件的合同(单向数据流)。
标签: flutter