栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

生成器与GlobalKey

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

生成器与GlobalKey

我们倾向于避免的真正原因

GlobalKey
与性能无关。它与以下事实更为相关:它会打乱一些图案。

根据定义,小部件不应能够访问其他小部件的具体信息(例如其大小或位置)。并

GlobalKey
授予访问此类信息的能力;允许人们做反模式的东西。

可以认为

GlobalKey
弹出 Flutter反应层的一种手段。

举个例子说明人们倾向于使用的方法

GlobalKey

  • 公开单身
    GlobalKey
    。用作不 提起国家的手段 。使得小部件之间的交互变得难以预测,因为这种关系不再是单面的(父母->孩子变成了双向关系)
  • 使用
    GlobalKey
    来计算布局的大小。然后使用此信息触发重新渲染。相反,这是
    RenderObject
    小部件中的角色,不应在小部件中完成。这使布局难以维护

Builder
另一方面,类似的东西不会破坏这些模式。按照定义
Builder
什么没有做
。这只是使用其他方法的一种巧妙方法
BuildContext

这通常意味着,如果您可以使用

Builder
而不是来解决布局问题
GlobalKey
,那么您将走上可维护布局的正确轨道。


什么时候使用

GlobalKey
呢?

好吧,如果可以,永远不会。尝试改为使用诸如

context.ancestorStateOfType
context.inheritWidgetOfExtactType
。您可能还需要考虑
RenderObject
为特定布局创建自定义。如果您需要父母/孩子之间的关系
RenderObject
parentData
则也可以与结合

但是,这可能更加复杂。它可能消耗比您想要的更多的时间。否则您可能陷入使用当前API难以实现的极端情况。

在这种情况下,

GlobalKey
只要您知道潜在的后果,就可以使用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/401828.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号