当前位置: 首页 > 知识库问答 >
问题:

全局变量的最佳实践和性能

魏英勋
2023-03-14

我需要存储一些应该在我的应用程序上随处可见的数据。到目前为止,我知道三种方法来做到这一点:

    < li >创建一个特殊文件使变量成为全局变量(Dart中的全局变量) < li >使用共享首选项(这里我只想访问数据,不一定要永久存储) 和InheritedWidget

我想知道哪个解决方案(或另一个我不知道的解决方案)在性能和易于实现方面是最好的。

共有1个答案

柯瀚海
2023-03-14

InheritedWidget可能是最好且更干净的方法,因为:

  • 它为您提供了限定变量范围的优势(我知道,您需要它们是全局的,所以目前这不是您关心的问题)。
  • 在某些情况下,您可以通过updateShouldNotify重建它。重建继承Widget时,您会重建所有引用其属性的小部件。
  • 它比全局变量更干净,因为您对它们有更多的控制权,并且您还可以实现一些利用一些私有变量的“全局”方法。毕竟,它仍然是一个类。
  • 访问具有O(1)复杂性,因为Flutter索引了InHRC edWidget实现,允许通过上下文中的祖先InHRC edElementForWidgetOfExactType方法进行有效访问。

也就是说,共享偏好是一个很大的否定,因为你会做很多磁盘I/O,它的性能比在RAM中操作要差得多。此外,您需要大量样板来管理变量的临时性质。

至于全局变量,我认为它们不能给你与< code>InheritedWidget相同的灵活性,我不认为它们是一个好的实践。

谈到 InheritedWidget,对于“动态”的东西,你可能不会直接使用它,因为它的变量应该是不可变的(类被标记为不可变,所以你的所有成员都应该是最终的)。

这里很好地解释了解决此问题的干净方法。基本上,AppState 是您的全局变量。

正如@Rémi Rousselet所指出的那样,告诉ancestorInheritedElementForWidgetOfExactType具有O(1)复杂性有点牵强,因为查找是在HashMap执行的,该哈希图在最佳情况下具有O(1)复杂性,在最坏情况下具有O(n)。

这仍然是一种有效的方法,因为它不遍历整个部件树来寻找它。

 类似资料:
  • 下面,我们将会回顾常见的安全原则,并介绍在使用 Yii 开发应用程序时,如何避免潜在安全威胁。 大多数这些原则并非您独有,而是适用于网站或软件开发, 因此,您还可以找到有关这些背后的一般概念的进一步阅读的链接。 基本准则 无论是开发何种应用程序,我们都有两条基本的安全准则: 过滤输入 转义输出 过滤输入 过滤输入的意思是,用户输入不应该认为是安全的,你需要总是验证你获得的输入值是在允许范围内。 比

  • Overview The term “production” refers to the stage in the software lifecycle when an application or API is generally available to its end-users or consumers. In contrast, in the “development” stage, y

  • Overview This article discusses performance and reliability best practices for Express applications deployed to production. This topic clearly falls into the “devops” world, spanning both traditional

  • 我有一个处理实时事件的系统。用户可以在指定的时间间隔插入自定义事件。实时引擎使用java.time.Duration来计时事件。通过jsp向用户展示一个菜单,该菜单以(全)秒为单位指定Duration。事件列表被序列化为Long值。所以我有三种使用相同值的方法。我创建了一个值对象,在每次访问时执行转换,这样我就不必将转换分散在整个代码中。我想知道是否有更好的方法来完成这个场景。这是我的VO。

  • 本篇文档的目的在于如何让系统管理员或开发者用尽可能少的时间部署一个安全的 web 站点或应用,即 SSL 和 TLS 部署最佳实践。

  • 性能与体验是前端的核心竞争力,是最直观反应页面是否好用、易用的标准。用户花在页面上的时间不应该是在等待页面加载和响应,而是使用和顺畅浏览的时间,因此如何提升页面性能和体验,让页面更快的可交互、浏览滚动更顺畅,是需要你持续的研究、优化、推进的。在 Rax 不断应用发展以及成熟的过程中,沉淀总结了一系列的性能体验的措施和最佳实践,通过这些,可以帮助你大幅提高页面的各项性能。 加载性能 统计口径 加载性