god*_*rao 3 dart flutter flutter-layout
我有一个小部件,其中有一个有状态小部件作为子部件。我想要的是,每当此有状态子小部件重新加载时就会触发一些操作。
在子小部件中我有这个功能,
//in child widget
@override
void initState() {
super.initState();
print("Inside Child Widget");
}
Run Code Online (Sandbox Code Playgroud)
问题是,它只是第一次打印。此后,每当父窗口小部件的状态发生变化导致重新加载该子窗口小部件时,都不会触发此操作。
我检查了这个答案initState 函数默认情况下不会在 StatefulWidget 中调用&我知道initstate()只调用一次,但是,当我重新加载小部件时,它会重建,所以该函数不应该再次触发吗?
init state 是一种只能用于在第一次构建小部件时初始化状态的方法。如果您需要在每次重建小部件时执行操作,请在构建方法中使用(返回之前)
WidgetsBinding.instance.addPostFrameCallback((_) {
// executes after build
})
Run Code Online (Sandbox Code Playgroud)
但是,请仔细考虑一下您所做的是否正确。请记住,如果您要在此方法中设置状态,则必须使用 set state。
InitState 不应该被重新执行,因为(通常)设置状态是您之后更新状态的方式。如果您需要从外部“源”重新加载资源,您可以使用 futurebuilder 或 StreamBuilder
| 归档时间: |
|
| 查看次数: |
2582 次 |
| 最近记录: |