我有一个小部件,它有一个有状态的小部件作为子部件。我想要的是,每当这个有状态的子小部件重新加载时,就会触发一些操作。
在子小部件中我有这个功能,
//in child widget
@override
void initState() {
super.initState();
print("Inside Child Widget");
}
问题是,它只是第一次打印。此后,每当父小部件的状态发生变化导致重新加载此子小部件时,不会触发此操作。
我检查了这个答案 initState function is't be called in StatefulWidget by default 并且我知道 initstate()
只被调用一次,但是,当我重新加载小部件时,它会重建,所以该功能不应该再次被触发吗?
答案 0 :(得分:2)
init state 是一种只能用于在第一次构建小部件时初始化状态的方法。如果每次重新构建小部件时都需要执行操作,请在构建方法中使用(返回之前)
MediaMuxer
但是,请仔细考虑您的做法是否正确。请记住,如果您要在此方法中设置状态,则必须使用 set state。
InitState 不应该被重新执行,因为(通常)设置状态是你之后更新状态的方式。如果您需要从外部“来源”重新加载资源,您可以使用 futurebuilder 或 StreamBuilder