diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md index 4e4c13b0a0f2..20671d46a4cd 100644 --- a/packages/video_player/video_player/CHANGELOG.md +++ b/packages/video_player/video_player/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 2.12.0 +* Passes `backBufferDurationMs` from `VideoPlayerOptions` to the underlying platform interface. * Updates minimum supported SDK version to Flutter 3.38/Dart 3.10. ## 2.11.1 diff --git a/packages/video_player/video_player/lib/video_player.dart b/packages/video_player/video_player/lib/video_player.dart index b287a39fed24..cd5a110ec28d 100644 --- a/packages/video_player/video_player/lib/video_player.dart +++ b/packages/video_player/video_player/lib/video_player.dart @@ -560,6 +560,7 @@ class VideoPlayerController extends ValueNotifier { final creationOptions = platform_interface.VideoCreationOptions( dataSource: dataSourceDescription, viewType: viewType, + videoPlayerOptions: videoPlayerOptions, ); if (videoPlayerOptions?.mixWithOthers != null) { diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml index c55f4e823c4e..fcadff731d35 100644 --- a/packages/video_player/video_player/pubspec.yaml +++ b/packages/video_player/video_player/pubspec.yaml @@ -3,11 +3,11 @@ description: Flutter plugin for displaying inline video with other Flutter widgets on Android, iOS, macOS and web. repository: https://github.com/flutter/packages/tree/main/packages/video_player/video_player issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22 -version: 2.11.1 +version: 2.12.0 environment: - sdk: ^3.10.0 - flutter: ">=3.38.0" + sdk: ^3.12.0 + flutter: ">=3.44.0" flutter: plugin: @@ -26,9 +26,9 @@ dependencies: flutter: sdk: flutter html: ^0.15.0 - video_player_android: ^2.9.1 + video_player_android: ^2.11.0 video_player_avfoundation: ^2.9.0 - video_player_platform_interface: ^6.6.0 + video_player_platform_interface: ^6.9.0 video_player_web: ^2.1.0 dev_dependencies: diff --git a/packages/video_player/video_player/test/video_player_initialization_test.dart b/packages/video_player/video_player/test/video_player_initialization_test.dart index 4524e8aca167..470eb1f98199 100644 --- a/packages/video_player/video_player/test/video_player_initialization_test.dart +++ b/packages/video_player/video_player/test/video_player_initialization_test.dart @@ -73,4 +73,22 @@ void main() { reason: 'view type must be passed to the platform', ); }); + + test('back buffer duration is forwarded to platform', () async { + const expectedBackBufferDurationMs = 20000; + + final controller = VideoPlayerController.networkUrl( + Uri.parse('https://127.0.0.1'), + videoPlayerOptions: VideoPlayerOptions(backBufferDurationMs: expectedBackBufferDurationMs), + ); + + await controller.initialize(); + + expect( + fakeVideoPlayerPlatform.videoPlayerOptions.last?.backBufferDurationMs, + expectedBackBufferDurationMs, + reason: + 'backBufferDurationMs must be forwarded to the platform via VideoCreationOptions.videoPlayerOptions', + ); + }); } diff --git a/packages/video_player/video_player/test/video_player_test.dart b/packages/video_player/video_player/test/video_player_test.dart index 56cd402f1228..e662dd4f9b7c 100644 --- a/packages/video_player/video_player/test/video_player_test.dart +++ b/packages/video_player/video_player/test/video_player_test.dart @@ -1900,6 +1900,7 @@ class FakeVideoPlayerPlatform extends VideoPlayerPlatform { List dataSources = []; List viewTypes = []; final Map> streams = >{}; + List videoPlayerOptions = []; bool forceInitError = false; int nextPlayerId = 0; final Map _positions = {}; @@ -1943,6 +1944,7 @@ class FakeVideoPlayerPlatform extends VideoPlayerPlatform { } dataSources.add(options.dataSource); viewTypes.add(options.viewType); + videoPlayerOptions.add(options.videoPlayerOptions); return nextPlayerId++; }