Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振中的StatefulBuilder与StatefulWidget-性能_Flutter - Fatal编程技术网

Flutter 颤振中的StatefulBuilder与StatefulWidget-性能

Flutter 颤振中的StatefulBuilder与StatefulWidget-性能,flutter,Flutter,我们可以使用StatefulBuilder来更新StatefulBuilder的UI上的特定元素,另一方面,我们可以归档类似的结果,将StatefulWidget移动到StatefulWidget并删除StatefulBuilder小部件 我更喜欢StatefulBuilder,因为它使代码更简单、更清晰,但是性能方面最好的是什么 A:使用stateWidget B:使用StatefulWidget两者的性能实际上没有差别。两者都涉及到状态对象的创建 鉴于您正在使用全局状态,因此没有真正的理由使

我们可以使用
StatefulBuilder
来更新
StatefulBuilder
的UI上的特定元素,另一方面,我们可以归档类似的结果,将
StatefulWidget
移动到
StatefulWidget
并删除
StatefulBuilder
小部件

我更喜欢
StatefulBuilder
,因为它使代码更简单、更清晰,但是性能方面最好的是什么

A:使用
stateWidget


B:使用
StatefulWidget

两者的性能实际上没有差别。两者都涉及到状态对象的创建

鉴于您正在使用全局状态,因此没有真正的理由使用与该现有全局状态的一部分相关的StatefulBuilder。StatefulBuilder提供了一种机制,使其自身的状态对象与您定义的状态相关联,并且可以进行更改。在您的情况下(全局数据),您的状态已经在内存中,因此您最好在StatefulBuilder回调中对其进行变异,例如

setState(() => myGlobalCounter.increment());

您可能知道,人们通常更喜欢基于InheritedWidget的状态解决方案。虽然这在某些方面可以被认为等同于将全局状态移动到全局树位置,但它更容易让所有感兴趣的小部件收到该状态更改的通知。

两者之间的性能实际上没有差异。两者都涉及到状态对象的创建

鉴于您正在使用全局状态,因此没有真正的理由使用与该现有全局状态的一部分相关的StatefulBuilder。StatefulBuilder提供了一种机制,使其自身的状态对象与您定义的状态相关联,并且可以进行更改。在您的情况下(全局数据),您的状态已经在内存中,因此您最好在StatefulBuilder回调中对其进行变异,例如

setState(() => myGlobalCounter.increment());

您可能知道,人们通常更喜欢基于InheritedWidget的状态解决方案。虽然在某些方面,这与将全局状态移动到全局树位置是等效的,但它更容易让所有感兴趣的小部件收到该状态更改的通知。

它们是一样的。StatefulBuilder大多数时候都是反模式的,你说“相同的东西”是什么意思?当然,结果是一样的,但代码是完全不同的。在我的应用程序中,我使用一个全局状态,所以我通常根本不需要使用
StatefulWidgets
。仅在某些特定场景中,我需要在没有此全局状态的情况下更新UI,我不希望有2个
StatefullWidgets
vs 20
StatelessWidgets
它们是相同的。他们之间没有什么不同。StatefulBuilder毕竟是一个StatefulWidget。好的,明白了。为什么你说
StatefulBuilder
是一种反模式?它很容易导致用户界面在更改后不更新的情况。你应该改用InheritedWidget,它们是一样的。StatefulBuilder大多数时候都是反模式的,你说“相同的东西”是什么意思?当然,结果是一样的,但代码是完全不同的。在我的应用程序中,我使用一个全局状态,所以我通常根本不需要使用
StatefulWidgets
。仅在某些特定场景中,我需要在没有此全局状态的情况下更新UI,我不希望有2个
StatefullWidgets
vs 20
StatelessWidgets
它们是相同的。他们之间没有什么不同。StatefulBuilder毕竟是一个StatefulWidget。好的,明白了。为什么你说
StatefulBuilder
是一种反模式?它很容易导致用户界面在更改后不更新的情况。您应该改用InheritedWidget。感谢您的澄清。如果我不需要第2页第1页的任何状态,但我需要第3页的任何状态,
InheritedWidget
是否有用?因为在我看来,它像是你需要用来在每个子部件上显示你的状态的东西。谢谢你的澄清。如果我不需要第2页第1页的任何状态,但我需要第3页的任何状态,
InheritedWidget
是否有用?因为在我看来,它像是你需要用来在每个子部件上显示你的状态的东西。