代码之家  ›  专栏  ›  技术社区  ›  My Car

为什么当我使用setState时,值没有改变?

  •  0
  • My Car  · 技术社区  · 3 年前

    我是新来的。我想用 setState 但它不起作用。

    我将非常感谢您的帮助。

    2 回复  |  直到 3 年前
        1
  •  0
  •   YZ Lee    3 年前

    确保要更改的值在小部件之外。

        2
  •  0
  •   Manishyadav    3 年前

    根据文件 setState() 定义是

    调用setState会通知框架,此对象的内部状态已发生更改,可能会影响此子树中的用户界面,从而导致框架为此状态对象安排生成。

    因此,如果小部件的状态发生变化,您必须调用setState来触发视图的重建,并立即看到新状态隐含的变化。

    例如:

    class _MyHomePageState extends State<MyHomePage> {
     int _counter = 0;
    
     void _incrementCounter() {
    
       setState(() {
      _counter++;
      });
     }
    

    所以上面 setState() 这被称为告诉颤振框架发生了变化,这会导致重新运行构建方法,更新的部分会反映在屏幕上。如果我们改变主意 _counter 如果不调用setstate(),则不会反映更改。