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