为什么我们需要在颤振中使用无状态小部件?

时间:2021-05-03 13:45:29

标签: flutter

如下图所示,Stateful widget 涵盖了 Stateless widget 的作用,当我可以用 Stateful widget 做同样的事情时,为什么 Flutter 设计者添加了另一个小部件?为了提高性能? 请不要发布差异只是回答为什么?

enter image description here

3 个答案:

答案 0 :(得分:6)

你总是用剑来做刀的工作吗?鉴于您始终可以轻松访问它们。刀不能做剑能做的所有事情,但这是否意味着默认情况下应该使用剑做任何事情,因为它更坚固?

您将拥有许多元素状态不会改变的小部件,以及其他您不必使用 pred_a ## # Predicted values of cty ## # x = manufacturer ## x | Predicted | 95% CI ## --------------------------------------- ## audi | 17.61 | [16.25, 18.97] ## dodge | 13.14 | [12.19, 14.08] ## ford | 14.00 | [12.85, 15.15] ## hyundai | 18.64 | [17.10, 20.18] ## land rover | 11.50 | [ 8.62, 14.38] ## mercury | 13.25 | [10.37, 16.13] ## pontiac | 17.00 | [14.42, 19.58] ## volkswagen | 20.93 | [19.82, 22.04] pred_b ## # Predicted values of cty ## # x = manufacturer ## x | Predicted | 95% CI ## --------------------------------------- ## volkswagen | 17.61 | [16.25, 18.97] ## subaru | 13.14 | [12.19, 14.08] ## pontiac | 14.00 | [12.85, 15.15] ## mercury | 18.64 | [17.10, 20.18] ## land rover | 11.50 | [ 8.62, 14.38] ## hyundai | 13.25 | [10.37, 16.13] ## ford | 17.00 | [14.42, 19.58] ## audi | 20.93 | [19.82, 22.04] 来更新您的 UI 的小部件(假设您不想使用更高级别的状态管理解决方案)。

使用无状态小部件,只要它们可以完成工作,意味着性能更高的小部件树。

<块引用>

请不要发布差异只是回答为什么?

了解它们之间的区别是理解“为什么”的关键,区别不仅仅在于名称 setStateless。但感觉到你不感兴趣,这就是原因。

答案 1 :(得分:1)

为了更好的性能。无状态小部件通常仅在以下三种情况之一被调用: 1- 小部件被插入到树中。 2- Widget 的父级更改其配置 3- 继承的 Widget 它取决于变化。

答案 2 :(得分:1)

好的 Flutter 代码将代码分成许多小的 Widget。除了更好的性能之外,创建 StatefulWidget 意味着您必须编写更多代码并为您的代码增加不必要的复杂性。