gpt4 book ai didi

flutter - 我可以单步定义状态吗

转载 作者:IT王子 更新时间:2023-10-29 06:51:59 24 4
gpt4 key购买 nike

Flutter 中,StatefulWidget 小部件需要分两步定义,首先定义一个扩展 StatefulWidget 的类,例如:

class Counter extends StatefulWidget {
@override
_CounterState createState() => new _CounterState();
}

然后是一个扩展前一个的 State 的类,例如:

class _CounterState extends State<Counter> {
int _counter = 0;

void _increment() {
setState(() {
++_counter;
});
}

@override
Widget build(BuildContext context) {
return new Row(children: <Widget>[
...
]);
}
}

有没有一种方法可以在 StatefulWidget 类中定义 createState() 而无需定义单独的 State

我试着从这里开始,但不知道下一步该做什么

class Counter extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return ????
}
}

最佳答案

简短的回答是:不,你不能。

但为什么呢?其实理解起来相当简单。在 flutter 中,每次你想使用一个小部件时,你都可以执行 new MyWidget(...)。注意这个词。这意味着每次更新小部件树时都会实例化一个新对象。但这也意味着每次更新时小部件都会得到很好的硬重置。防止您在小部件内存储任何可变数据。


但是,有状态小部件如何工作?

看到第一部分的 createState 了吗?在您的小部件的第一次实例化时,它将被调用。然后它将被缓存在较低层之一中。

这样下次你实例化你的小部件时,状态将从缓存中获取,因此保留它的自定义值。

关于flutter - 我可以单步定义状态吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49065064/

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