Flutter:在子部件的状态上调用函数

2024-01-25

我创建了一个有状态小部件,其父小部件需要调用位于子状态中的函数。

具体来说,我有一个 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(使用前将#替换为@)

Flutter:在子部件的状态上调用函数 的相关文章

随机推荐