diff --git a/packages/video_player/android/src/main/java/io/flutter/videoplayer/VideoPlayerPlugin.java b/packages/video_player/android/src/main/java/io/flutter/videoplayer/VideoPlayerPlugin.java index 59d634a82b55..b91d08497b3d 100644 --- a/packages/video_player/android/src/main/java/io/flutter/videoplayer/VideoPlayerPlugin.java +++ b/packages/video_player/android/src/main/java/io/flutter/videoplayer/VideoPlayerPlugin.java @@ -32,7 +32,6 @@ private class VideoPlayer { private final EventChannel eventChannel; private boolean isPlaying = false; private boolean isInitialized = false; - private boolean isLooping = false; @TargetApi(21) VideoPlayer( @@ -133,7 +132,7 @@ void pause() { } void setLooping(boolean value) { - mediaPlayer.setLooping(isLooping); + mediaPlayer.setLooping(value); } void setVolume(double value) { diff --git a/packages/video_player/ios/Classes/VideoPlayerPlugin.m b/packages/video_player/ios/Classes/VideoPlayerPlugin.m index 0e14b5c25a12..65745b72aaee 100644 --- a/packages/video_player/ios/Classes/VideoPlayerPlugin.m +++ b/packages/video_player/ios/Classes/VideoPlayerPlugin.m @@ -100,7 +100,6 @@ - (instancetype)initWithURL:(NSURL*)url frameUpdater:(FrameUpdater*)frameUpdater if ([videoTrack statusOfValueForKey:@"preferredTransform" error:nil] == AVKeyValueStatusLoaded) { dispatch_async(dispatch_get_main_queue(), ^{ - [item addOutput:_videoOutput]; [_player replaceCurrentItemWithPlayerItem:item]; }); } @@ -147,6 +146,7 @@ - (void)observeValueForKeyPath:(NSString*)path break; case AVPlayerItemStatusReadyToPlay: _isInitialized = true; + [item addOutput:_videoOutput]; [self sendInitialized]; [self updatePlayingState]; break; @@ -230,6 +230,7 @@ - (FlutterError* _Nullable)onListenWithArguments:(id _Nullable)arguments - (void)dispose { _disposed = true; + [_displayLink invalidate]; [[_player currentItem] removeObserver:self forKeyPath:@"status" context:statusContext]; [[_player currentItem] removeObserver:self forKeyPath:@"loadedTimeRanges"