【发布时间】:2019-12-08 19:55:23
【问题描述】:
我正在尝试构建一个小部件并在 initState() 函数中执行某些操作。我以前在其他情况下也这样做过,但这次 initState() 只是没有被调用。我已经放了断点,应用程序进入构造函数(断言行)并且断言中的对象不为空,所以它应该继续并初始化状态。但它没有,我不明白为什么。
任何帮助将不胜感激。谢谢。
代码如下:
class MyWidget extends StatefulWidget {
SomeOtherObject someOtherObject;
MyWidget({@required this.someOtherObject})
:
assert(someOtherObject != null)
;
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
@override
void initState() {
super.initState();
// widget.someOtherObject.addListener(update);
}
@override
Widget build(BuildContext context) {
// ...
}
}
【问题讨论】:
-
那么如果你在 initState 中放一个 print() 语句,它不会打印任何东西?
-
什么都没有。我已经试过了 :) 不会在该行的断点处停止,不会打印任何内容。
-
你在哪里使用这个小部件?
-
所以你知道,initState 在热重载时不会被调用,只会在热重启时被调用。
-
@BenjaminS。是的,我知道。正如我所说,它不会在断点处停止,控制台也没有打印任何内容。