dart 如果控制器已初始化,则Flutter处理()(视频播放器)

a7qyws3x  于 2022-12-16  发布在  Flutter
关注(0)|答案(2)|浏览(135)

我的应用每次离开页面时都会释放一个控制器,但是,我没有使用initState()初始化控制器,而是使用onTap初始化控制器,因此我想知道是否可以检查控制器是否已初始化,以确定是否应该释放它。
主计长是:

VideoPlayerController _controller;

我在onTap之后初始化它:

onTap: () {
 setState(() {
     _initVideo(file);
 });
}

_initVideo(Future<File> videoFile) async {
    final video = await videoFile;
    _controller = VideoPlayerController.file(video)

      ..setLooping(false)
      ..initialize().then((value) => setState(() {
            _controller.addListener(() {
              setState(() {
              });
            });
          }));
  }

对于dispose,我尝试检查VideoController是否已初始化,如果已初始化,则为dispose(),否则不初始化。

@override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }
9gm1akwq

9gm1akwq1#

一个简单的解决方案可能是在初始化时将一个标志设置为true,并在dispose方法中检查它(我知道这应该是一个注解,但我没有50个代表)。

fnatzsnv

fnatzsnv2#

如果使用StatefulWidget,则可以检查初始化视频后是否释放此小部件

await videoPlayerController.initialize();
if (!mounted) return;
videoPlayerController.play();

相关问题