我创建了一个有状态小部件,其父小部件需要调用位于子状态中的函数。
具体来说,我有一个 PlayerContainer 类,它创建一个 VideoPlayer 并具有 VideoPlayerController 的成员变量。当我按下播放按钮时,我的主类需要在状态的 VideoPlayerController 上调用 play() ,因此我在 State 类中创建了一个函数,但我不知道如何从父窗口小部件访问该函数。
这可能吗?或者我对这一切都错了?
我知道我参加聚会已经很晚了,但我认为我有一些东西可能会有所帮助。因此,您需要在您的工作中做四 (4) 件事VideoPlayerController
class:
1. 创建状态类的实例。
2. 创建一个可以在您的计算机中访问的方法(play)PlayerContainer
class
3. 在您的方法中,使用VideoPlayerControllerState
实例来调用状态类中的方法。
4. 最后,当你createState
,使用您已创建的实例执行此操作。
class VideoPlayerController extends StatefulWidget {
final VideoPlayerControllerState vpcs = VideoPlayerControllerState();
void play() {
vpcs.play();
}
@override
State<StatefulWidget> createState() => vpcs;
}
如您所见,play
方法用途vpcs
(VideoPlayerController State 实例)调用状态类中已有的 play 方法。
在 PlayerContainer 类中,使用成员变量来调用 play 方法。
class PlayerContainerState extends State<PlayerContainer> {
VideoPlayerController _vpc;
@override
void initState() {
super.initState();
_vpc = VideoPlayerController();
}
...
void _handlePressPlay(){
_vpc.play();
}
...
@override
Widget build(BuildContext context) {
return ... //your video player widget using _vpc as your VideoPlayerController
_vpc,
);
}
}
您可以致电_handlePressPlay()
来自onPressed
播放按钮的方法。或者,只需输入_vpc.play()
in the onPressed
方法。你的选择 :-)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)