- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在 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/
我正在尝试使用范围输入元素构建一个 slider ,该元素在单击、滚动或长按(连续按下)时移动 1 步。我有点击和滚动所需的逻辑,但是相同的逻辑似乎不适用于鼠标按下事件(长按/连续按下)。 到目前为止
我正在编写一个跟踪其他程序执行情况的程序。我正在使用动态指令检测来跟踪 x86 的 CMP 指令的行为。 我正在使用 Windows 调试 API 来控制被调试程序的行为。我使用“仅调试此进程”标志启
我有以下代码片段。 我有点困惑,首先,为什么我的步骤参数是2,是不是因为我从字典之外跳转,所以我最终得到了总人口? 第二:i+1 到底是做什么的?以前没见过吗?如果我从 i (国家名称)跳到总人口上,
如果我同时拥有公钥和私钥,如何使用 everyauth 通过 node.js 执行非常简单的 oauth 身份验证?与多步骤 facebook 类型的身份验证不同,我只想使用 everyauth 进行
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2年前关闭。 Improve thi
我是一名优秀的程序员,十分优秀!