gpt4 book ai didi

flutter - 如果 widget 多次调用 InheritedWidget.of() 是否有任何性能问题?

转载 作者:行者123 更新时间:2023-12-03 03:14:05 26 4
gpt4 key购买 nike

我在flutter中的代码实现InheritedWidget/InheritedModel是推荐的。但是我有一个小问题。

假设我有一个名为 MyInheritedWidget 的继承小部件其中包含一些 react 性数据。访问该数据的最佳方式是什么?

Widget build(BuildContext context) {
MyData data= MyInheritedWidget.of(context).someData;
return ExampleWidget(
//Using the data here
data : data.someData.data,
moreData : data.moreData
sameData:data.someData.data,
);

Widget build(BuildContext context) {
return ExampleWidget(
//Using the data here
data : MyInheritedWidget.of(context).someData.data,
moreData : MyInheritedWidget.of(context).someData.moreData
sameData: MyInheritedWidget.of(context).someData.data,
);

我知道我们叫context.dependOnInheritedWidgetOfExactType<MyInheritedWidget>();并将上下文订阅到数据,因此当它更改时会重建。我们不是通过调用 MyInheritedWidget.of(context) 来多次订阅吗?还是性能一样?我认为 flutter 团队足够聪明,只订阅一次并在我们订阅后返回数据。但哪种方法的性能更好?

这与可读性无关,而是与性能有关。因为我可以轻松地使用 BuildContext 中的扩展来转换 MyInheritedWidget.of(context).someDatacontext.someData .

最佳答案

Inherited.of(context) 相对等价于:

Map<Type, Inherited> ancestors;

return ancestors[context.widget.runtimeType];

因此,在同一个小部件中多次读取 InheritedWidget 并不是真正的问题。

但是从变量中提取它的值很可能会稍微快一些,因为读取 Map 比只读取变量要慢。

关于flutter - 如果 widget 多次调用 InheritedWidget.of() 是否有任何性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63909743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com