Open nildebug opened 5 years ago
_changeVideo('https://www.google.com/b.m3u8'); _changeVideo('https://www.google.com/c.m3u8'); If you add this.videoPlayController.dispose() It's only going to play C but sometimes it's going to show up A VideoPlayerController was used after being disposed. If you don't, it's going to play b and c at the same time
try this.
initState(){
videoPlayController = VideoPlayerController.network('https://www.google.com/a.m3u8');
chewieController = ChewieController(videoPlayerController: videoPlayController, aspectRatio: 16 / 9,
autoPlay: true, looping: false, isLive: false);
playerWidget = Chewie(
controller: chewieController,
);
super.initState();
}
void _changeVideo(url){
videoPlayController.dispose();
videoPlayController.dispose(); //
videoPlayController=VideoPlayerController.network(url);
chewieController = ChewieController(videoPlayerController: videoPlayController, aspectRatio: 16 / 9,
autoPlay: true, looping: false);
playerWidget = Chewie(
controller: chewieController,
);
}
try this.
initState(){ videoPlayController = VideoPlayerController.network('https://www.google.com/a.m3u8'); chewieController = ChewieController(videoPlayerController: videoPlayController, aspectRatio: 16 / 9, autoPlay: true, looping: false, isLive: false); playerWidget = Chewie( controller: chewieController, ); super.initState(); } void _changeVideo(url){ videoPlayController.dispose(); videoPlayController.dispose(); // videoPlayController=VideoPlayerController.network(url); chewieController = ChewieController(videoPlayerController: videoPlayController, aspectRatio: 16 / 9, autoPlay: true, looping: false); playerWidget = Chewie( controller: chewieController, ); }
not work
Have you been able to solve this problem?
I have the same problem please help
I have the same problem please help, ui will report an error, If instead of using videoPlayController.dispose (), use chewieController.dispose () Memory overflow
you can like that: videoPlayController.pause(); not use videoPlayController.dispose();
I solved this issue by using a list of VideoPlayerControllers instead. This will allow you to safely dispose the current controller and use a new instance when changing the url.This snippet should work:
List<VideoPlayerController> vControllers = [];
List<ChewieController> cControllers = [];
initState(){
var videoPlayController = VideoPlayerController.network('https://www.google.com/a.m3u8');
var chewieController = ChewieController(videoPlayerController: videoPlayController);
vControllers.add(videoPlayController);
cControllers.add(chewieController);
playerWidget = Chewie(
controller: chewieController,
);
super.initState();
}
void _changeVideo(url){
vControllers?.first?.dispose();
cControllers?.first?.dispose();
vControllers?.removeAt(0);
cControllers?.removeAt(0);
var videoPlayController=VideoPlayerController.network(url);
var chewieController = ChewieController(videoPlayerController: videoPlayController);
vControllers.add(videoPlayController);
cControllers.add(chewieController);
playerWidget = Chewie(
controller: chewieController,
);
}
Hi guys, the problem can be solved with this answer: Stack Overflow
How many times has the button been pressed(_changeVideo)?It's going to play multiple video's Add this. VideoPlayController. The dispose ();It's always going to play one video, But it will tell you “A VideoPlayerController was used after being disposed. ” This problem has been bothering me for a few days. Can you take a look at it?Thank you very much!!!