小部件重新加载时未调用 initState() 方法

时间:2021-01-09 09:13:07

标签: flutter dart flutter-layout

我有一个小部件,它有一个有状态的小部件作为子部件。我想要的是,每当这个有状态的子小部件重新加载时,就会触发一些操作。

在子小部件中我有这个功能,

//in child widget

 @override
  void initState() {
    super.initState();

    print("Inside Child Widget"); 
}

问题是,它只是第一次打印。此后,每当父小部件的状态发生变化导致重新加载此子小部件时,不会触发此操作。

我检查了这个答案 initState function is't be called in StatefulWidget by default 并且我知道 initstate() 只被调用一次,但是,当我重新加载小部件时,它会重建,所以该功能不应该再次被触发吗?

1 个答案:

答案 0 :(得分:2)

init state 是一种只能用于在第一次构建小部件时初始化状态的方法。如果每次重新构建小部件时都需要执行操作,请在构建方法中使用(返回之前)

MediaMuxer

但是,请仔细考虑您的做法是否正确。请记住,如果您要在此方法中设置状态,则必须使用 set state。

InitState 不应该被重新执行,因为(通常)设置状态是你之后更新状态的方式。如果您需要从外部“来源”重新加载资源,您可以使用 futurebuilder 或 StreamBuilder

相关问题