【问题标题】:Is there a down side to using GlobalKey<NavigatorState> to do all my route navigation?使用 GlobalKey<NavigatorState> 进行所有路线导航是否有不利之处?
【发布时间】: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


【解决方案1】:

没有。没有缺点。

关于屏幕切换的性能问题可以忽略不计。

【讨论】:

    猜你喜欢
    • 2020-12-25
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多