Ama*_*ite 0 performance dart flutter
我需要存储一些应在我的应用程序中到处可用的数据。到目前为止,我知道执行此操作的三种方法:
我想知道哪种解决方案(或我不知道的另一种解决方案)在性能方面最容易实现。
一种InheritedWidget可能是最好和更清洁的方法,因为:
updateShouldNotify。重建时,InheritedWidget您将重建引用其属性的所有小部件。O(1)自从Flutter索引InheritedWidget实现以来,访问具有复杂性,从而允许通过中的ancestorInheritedElementForWidgetOfExactType方法进行有效访问context。就是说,这SharedPreferences是一个很大的问题,因为您要执行大量的磁盘I / O,与在RAM中进行操作相比,其性能要差很多。另外,您将需要大量样板来管理变量的临时性质。
至于全局变量,我认为它们不能为您提供与an一样的敏捷性,InheritedWidget并且我认为它们不是一个好习惯。
谈到InheritedWidget,对于“动态”的东西,您可能不会简单地使用它,因为它的变量应该是不可变的(类被标记为immutable,因此您的所有成员都应该是最终的)。
解决此问题的一种干净方法在此处已得到很好的说明。基本上AppState是您的全局变量。
@RémiRousselet指出的EDIT告诉您,ancestorInheritedElementForWidgetOfExactType具有O(1)复杂性有点麻烦,因为查找是在上进行的,在最坏的情况下,最好的情况下HashMap具有O(1)复杂性O(n)。
这仍然是一种有效的方法,因为它不会遍历整个小部件树来寻找它。
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |