我的应用每次离开页面时都会释放一个控制器,但是,我没有使用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();
}
2条答案
按热度按时间9gm1akwq1#
一个简单的解决方案可能是在初始化时将一个标志设置为true,并在dispose方法中检查它(我知道这应该是一个注解,但我没有50个代表)。
fnatzsnv2#
如果使用StatefulWidget,则可以检查初始化视频后是否释放此小部件