首页 > 解决方案 > 在 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;
    }
}

这两个声明有什么区别,什么时候应该使用一个而不是另一个?

标签: flutterdart

解决方案


您所在州的变量保存在您的州内。函数中的变量是函数的本地变量。

这意味着函数中的变量将在函数完成时被销毁,并且每次调用函数时都会重新创建和重新初始化。

因此,如果你希望这个变量在函数调用之间保持你的状态,它需要在函数之外。在这种情况下,在您的状态类中。

这与效率无关。如果您想要仅对构建函数的这一运行重要的东西,请将其设为局部变量。如果您想要即使多次调用 build(例如每次状态更改)也能保持其价值的东西,您需要将其放入您的状态类中。

一般来说,将您的变量限制在仍然满足其目的的最少可见性,然后让编译器担心效率。变量的可见性越低,编译器就越容易对其进行优化。


推荐阅读