我创建了一个有状态的小部件,其父小部件需要调用一个处于子状态的函数。
具体来说,我有一个类PlayerContainer,该类创建一个VideoPlayer并具有一个VideoPlayerController的成员变量。当我按下播放按钮时,我的主类需要在该州的VideoPlayerController上调用play(),因此我在State类内创建了一个函数,但是我不知道如何从父窗口小部件访问该函数。
那有可能吗?还是我要解决所有这些错误?
使用简单的应用程序,您只需在与VideoPlayer相同的Widget中创建播放按钮即可。通过将PlayerContainer与它的父级组合,您将增加小部件状态范围的大小,以便需要访问它的所有内容都成为单个较大小部件的一部分。
子控件可以受到祖先影响的主要方式是:通过使用不同的参数进行重建,或者通过聆听祖先更改的内容。对于后者,您可以在子级附近的某个地方使用InheritedWidget。如果子级引用InheritedWidget,则在IW更改时将对其进行重建。另一种方法是侦听祖先生成的事件流。
您可能会发现,最简单的方法是一次构建整个页面,直到变得笨拙为止。