Flutter 使用GlobalKey有缺点吗<;导航状态>;做我所有的路线导航?

Flutter 使用GlobalKey有缺点吗<;导航状态>;做我所有的路线导航?,flutter,Flutter,我在Flatter中看到了一个示例,您可以在不访问BuildContext的情况下导航路线 final GlobalKey<NavigatorState> _navKey = new GlobalKey<NavigatorState>(); navigatorKey.currentState.pushNamed('/'); final GlobalKey _navKey=new GlobalKey(); navigatorKey.currentState.pushNa

我在Flatter中看到了一个示例,您可以在不访问BuildContext的情况下导航路线

final GlobalKey<NavigatorState> _navKey = new GlobalKey<NavigatorState>();

navigatorKey.currentState.pushNamed('/');
final GlobalKey _navKey=new GlobalKey();
navigatorKey.currentState.pushNamed('/');

使用此方法进行“我的所有应用程序”导航有什么缺点吗?

没有。没有缺点


屏幕开关的性能问题可以忽略不计。

全局键相对昂贵。如果您这样做的唯一原因是访问
context
,那么您尝试推送路线的方式可能存在问题。“相对而言”。Flatter文档称,在使用GlobalKey进行帧重绘时,成本相对较高。但是导航屏幕不在热路径中,而且相对便宜。GlobalKeys的“昂贵”部分与简单读取小部件的状态无关。我已经打开了一个更新文档的PR。@RémiRousselet您可以链接PR吗?对于
导航器
,这可能很好。当您有两个
Navigator
(cupertino)实例时,这是有争议的,但在其他方面没有问题。总的来说,GlobalKeys的真正问题在于它们打破了小部件的契约(单向数据流)。