flutter - 在 Flutter 中,State 类中声明的变量和该状态的 build 方法中声明的变量有什么区别?
问题描述
在处理有状态小部件时的颤动中,我们可以在使用variable_1
和显示的状态类内的两个位置声明变量variable_2
。
class StatefulWidget_STATE_class extents State<className>{
final int variable_1 = 2;
@override
Widget build(BuildContext context){
final int variable_2 = 2;
}
}
这两个声明有什么区别,什么时候应该使用一个而不是另一个?
解决方案
您所在州的变量保存在您的州内。函数中的变量是函数的本地变量。
这意味着函数中的变量将在函数完成时被销毁,并且每次调用函数时都会重新创建和重新初始化。
因此,如果你希望这个变量在函数调用之间保持你的状态,它需要在函数之外。在这种情况下,在您的状态类中。
这与效率无关。如果您想要仅对构建函数的这一运行重要的东西,请将其设为局部变量。如果您想要即使多次调用 build(例如每次状态更改)也能保持其价值的东西,您需要将其放入您的状态类中。
一般来说,将您的变量限制在仍然满足其目的的最少可见性,然后让编译器担心效率。变量的可见性越低,编译器就越容易对其进行优化。
推荐阅读
- java - 如何简化来自 Map 的处理值
- r - 传递多列以在 dplyr 中运行
- pytorch - 如何在pytorch中制作图形数据
- javascript - npm init -y 在 Windows 中不起作用(VScode 错误)
- php - 如何避免 Laravel Eloquent 模型属性和方法的混合命名约定
- html - 如何使用“getElementByClassName()”解析 VBA 中的 HTML 元素?
- javascript - 如何在JS中强制文档刷新?
- python - 在熊猫中用增加的值填充缺失值
- java - Java 自定义注解 - 使用注解调用方法
- flutter - Fluter:如何使用 Getx 更改变量?