gpt4 book ai didi

flutter - 使用设置状态功能更新小部件

转载 作者:行者123 更新时间:2023-12-04 09:45:17 26 4
gpt4 key购买 nike

我需要一些关于 setState() 的说明功能。
我把问题分成了 3 个,但都是关于 setState() .

  • 调用setState时应用程序或应用程序中的所有小部件
    上下文(?)被重新渲染/更新?
  • setState(() {/* MY
    CODE */});
    中的代码有什么重要性?反对/* myCode;*/ setState(() {});
  • 如果我要更新 setState 中的一些变量功能
    喜欢:setState(() { myText='dfg';})和这个变量
    更新小部件,Text(myText) , setState 怎么样会知道更新
    文本小部件?

  • 例如,在以下经典代码中:
        return Scaffold(
    appBar: AppBar(
    title: Text('Sample Code'),
    ),
    body: Center(
    child: Text('You have pressed the button $_count times.'),
    ),
    bottomNavigationBar: BottomAppBar(
    shape: const CircularNotchedRectangle(),
    child: Container(
    height: 50.0,
    ),
    ),
    floatingActionButton: FloatingActionButton(
    onPressed: () => setState(() {
    _count++;
    }),
    tooltip: 'Increment Counter',
    child: Icon(Icons.add),
    ),
    floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
    );
    }
    }

    setState() 在 bottomNavigationBar 小部件中被调用(所以这个小部件被标记为脏),那么为什么我们可以在与 child...body 相关的 Text 小部件中看到更新

    最佳答案

    1- 当您调用 setState()方法只有那个小部件才能重新构建。

  • 我不想让事情变得复杂,但这条规则有一个异常(exception),那就是在使用 时。提升状态每次消费者小部件回调祖先以重建状态时,都会导致重新绘制多个小部件的技术。我将在下面显示一个图表,希望它更清楚,但如果它看起来很复杂,你不必担心它,因为无论如何你都不会使用该技术,因为还有其他更简单和更容易的方法。

  • enter image description here

    2-没有区别,只是将更改的代码放在 setState()中更有意义方法表明这些是变化的变量。

    3- 当您调用 setState() 时就像在你的例子中这样 setState(() => _count++);不是 setState 的小部件调用方法 get 将被标记为脏,而不是依赖于该状态的小部件(这里的状态是 _count 变量),所以在下一次调用 build方法框架见 Text使用 _counter 的小部件变量为脏因此重新绘制它,下图显示了您的小部件树并解释了它是如何完成的
    enter image description here

    关于flutter - 使用设置状态功能更新小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62154573/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com