StatefulWidget 的 initState 为啥没执行?
我写了个 StatefulWidget,但发现 initState 方法根本没被调用,页面也没报错,这是啥情况?
我检查了类继承,确认是 StatefulWidget,状态类也 override 了 initState,但就是不进断点。代码结构大概这样:
class MyPage extends StatefulWidget {
@override
_MyPageState createState() => _MyPageState();
}
class _MyPageState extends State<MyPage> {
@override
void initState() {
super.initState();
print('initState 被调用了'); // 这行没输出
}
@override
Widget build(BuildContext context) {
return Container();
}
}
难道是我哪里漏了?还是热重载的问题?
可以试试这样:先停掉应用,然后重新运行(不是热重载),看看 initState 是不是正常工作了。如果这时候打印出来了,那基本就是热重载的锅。
另外再检查下你的 widget 是不是真的被渲染了。有时候父组件没正确返回这个子 widget,initState 自然也不会调用。可以在 build 方法里加个 print 确认下是不是走到了这一步。
对了,记得 super.initState() 要放在 initState 的第一行,虽然你已经这样写了,但这也是个常见错误点。要是还不行的话,看看有没有其他地方影响了这个 widget 的生命周期。
开发 Flutter 的时候经常遇到这种奇怪的问题,别灰心,多试试总能搞定的。