From a34338458936ac170599146f300fd857825aa8fd Mon Sep 17 00:00:00 2001 From: Sailendra Bathi Date: Thu, 18 Jun 2026 10:45:14 +0000 Subject: [PATCH 1/2] [video_player_platform_interface] Add backBufferDurationMs to VideoPlayerOptions --- .../CHANGELOG.md | 3 ++- .../lib/video_player_platform_interface.dart | 18 ++++++++++++++++-- .../pubspec.yaml | 2 +- .../test/video_player_options_test.dart | 8 ++++++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/packages/video_player/video_player_platform_interface/CHANGELOG.md b/packages/video_player/video_player_platform_interface/CHANGELOG.md index 203f913e937c..fddb28257411 100644 --- a/packages/video_player/video_player_platform_interface/CHANGELOG.md +++ b/packages/video_player/video_player_platform_interface/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 6.8.0 +* Adds `backBufferDurationMs` to `VideoPlayerOptions` to support configuring ExoPlayer back buffer duration on Android. * Updates minimum supported SDK version to Flutter 3.38/Dart 3.10. ## 6.7.0 diff --git a/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart b/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart index 16c83ed35018..d318c81ed657 100644 --- a/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart +++ b/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart @@ -462,7 +462,11 @@ class VideoPlayerOptions { this.mixWithOthers = false, this.allowBackgroundPlayback = false, this.webOptions, - }); + this.backBufferDurationMs, + }) : assert( + backBufferDurationMs == null || backBufferDurationMs > 0, + 'backBufferDurationMs must be greater than zero', + ); /// Set this to true to keep playing video in background, when app goes in background. /// The default value is false. @@ -477,6 +481,9 @@ class VideoPlayerOptions { /// Additional web controls final VideoPlayerWebOptions? webOptions; + + /// ** Android only **. Sets ExoPlayer's back buffer duration in milliseconds. + final int? backBufferDurationMs; } /// [VideoPlayerWebOptions] can be optionally used to set additional web settings @@ -576,13 +583,20 @@ class VideoViewOptions { @immutable class VideoCreationOptions { /// Constructs an instance of [VideoCreationOptions]. - const VideoCreationOptions({required this.dataSource, required this.viewType}); + const VideoCreationOptions({ + required this.dataSource, + required this.viewType, + this.videoPlayerOptions, + }); /// The data source used to create the player. final DataSource dataSource; /// The type of view to be used for displaying the video player final VideoViewType viewType; + + /// Additional configuration options for the video player. + final VideoPlayerOptions? videoPlayerOptions; } /// Represents an audio track in a video with its metadata. diff --git a/packages/video_player/video_player_platform_interface/pubspec.yaml b/packages/video_player/video_player_platform_interface/pubspec.yaml index 1742dec5a53c..c8d03f31704d 100644 --- a/packages/video_player/video_player_platform_interface/pubspec.yaml +++ b/packages/video_player/video_player_platform_interface/pubspec.yaml @@ -4,7 +4,7 @@ repository: https://github.com/flutter/packages/tree/main/packages/video_player/ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22 # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 6.7.0 +version: 6.8.0 environment: sdk: ^3.10.0 diff --git a/packages/video_player/video_player_platform_interface/test/video_player_options_test.dart b/packages/video_player/video_player_platform_interface/test/video_player_options_test.dart index 6af3e57f6c0f..dfd0ffdac6a2 100644 --- a/packages/video_player/video_player_platform_interface/test/video_player_options_test.dart +++ b/packages/video_player/video_player_platform_interface/test/video_player_options_test.dart @@ -14,4 +14,12 @@ void main() { final options = VideoPlayerOptions(); expect(options.mixWithOthers, false); }); + test('VideoPlayerOptions backBufferDurationMs defaults to null', () { + final options = VideoPlayerOptions(); + expect(options.backBufferDurationMs, null); + }); + test('VideoPlayerOptions backBufferDurationMs stores configured value', () { + final options = VideoPlayerOptions(backBufferDurationMs: 20000); + expect(options.backBufferDurationMs, 20000); + }); } From c686c5b5329fdb1bc63635aa726815decdfc8ebe Mon Sep 17 00:00:00 2001 From: sailendrabathi <44525804+sailendrabathi@users.noreply.github.com> Date: Thu, 18 Jun 2026 16:34:19 +0530 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../lib/video_player_platform_interface.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart b/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart index d318c81ed657..dc874eca23ba 100644 --- a/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart +++ b/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart @@ -464,8 +464,8 @@ class VideoPlayerOptions { this.webOptions, this.backBufferDurationMs, }) : assert( - backBufferDurationMs == null || backBufferDurationMs > 0, - 'backBufferDurationMs must be greater than zero', + backBufferDurationMs == null || backBufferDurationMs >= 0, + 'backBufferDurationMs must be zero or greater', ); /// Set this to true to keep playing video in background, when app goes in background. @@ -482,7 +482,7 @@ class VideoPlayerOptions { /// Additional web controls final VideoPlayerWebOptions? webOptions; - /// ** Android only **. Sets ExoPlayer's back buffer duration in milliseconds. + /// **Android only**. Sets ExoPlayer's back buffer duration in milliseconds. final int? backBufferDurationMs; }