NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #219 most downloaded on pub.dev
Flutter plugin for displaying inline video with other Flutter widgets on Android, iOS, macOS and web.
Last release 5 days ago
02 Oct 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
163 releases · first in 2017
A platform seek can finish after VideoPlayerController.dispose() , causing _updatePosition to write to the disposed notifier and throw. This also happ
A platform seek can finish after VideoPlayerController.dispose(), causing _updatePosition to write to the disposed notifier and throw. This also happens in the controller's own VideoEventType.completed pause/seek chain, without the caller invoking a method after disposal.
Checks _isDisposed at the shared position-update boundary. Adds regressions for an explicit pending seek and the pending seek from a playback-completed event. Both tests fail on the unmodified controller and pass with the guard. The patch updates the package to 2.14.1 and incorporates the existing NEXT changelog entry as required by the release instructions.
Fixes flutter/flutter#193147
Validation with Flutter 3.44.9 / Dart 3.12.2:
dart analyze --fatal-infos for the package and example: no issues.publish-check: passed after committing the four-file patch.git diff --check: passed.Repository-wide validate could not complete in the sparse checkout because the root README references packages outside the checkout (animations). Native/integration tests were not run; this change is limited to the Dart controller.
No public API or dartdoc changes are needed.
One column per quarter.
Adds video quality selection support for HLS/DASH adaptive streams via getVideoTracks(), selectVideoTrack(), and isVideoTrackSupportAvailable() method
getVideoTracks(), selectVideoTrack(), and
isVideoTrackSupportAvailable() methods.Adds preventsDisplaySleepDuringVideoPlayback to VideoPlayerOptions and VideoPlayerValue, and setPreventsDisplaySleepDuringVideoPlayback to VideoPlayer
preventsDisplaySleepDuringVideoPlayback to VideoPlayerOptions and
VideoPlayerValue, and setPreventsDisplaySleepDuringVideoPlayback to
VideoPlayerController, to control whether the display sleeps during playback
on iOS and macOS.Passes backBufferDurationMs from VideoPlayerOptions to the underlying platform interface.
backBufferDurationMs from VideoPlayerOptions to the underlying platform interface.Optimizes caption retrieval with binary search.
Adds getAudioTracks() and selectAudioTrack() methods to retrieve and select available audio tracks.
getAudioTracks() and selectAudioTrack() methods to retrieve and select available audio tracks.Fixes a bug where the VideoPlayer widget and VideoProgressIndicator widget would stop updating after GlobalKey reparenting.
VideoPlayer widget and VideoProgressIndicator widget would stop updating after GlobalKey reparenting.VideoProgressIndicator widget to handle zero-duration videos.Adds support for platform views as an optional way of displaying a video on Android and iOS.
Fixes layout issue caused by Transform.rotate not affecting space calculation.
Transform.rotate not affecting space calculation.Updates minimum supported SDK version to Flutter 3.22/Dart 3.4.
Updates minimum supported SDK version to Flutter 3.19/Dart 3.3.
StateError in the case where
VideoPlayerController.initialize receives more than one initialized event.Updates minimum web implementation version to ensure support for the new webOptions exposed in 2.9.0.
webOptions exposed in 2.9.0.Exports types: VideoPlayerWebOptions and VideoPlayerWebOptionsControls to customize the webOptions field in VideoPlayerOptions objects.
VideoPlayerWebOptions and VideoPlayerWebOptionsControls to
customize the webOptions field in VideoPlayerOptions objects.webOptions to the web implementation.Ensures that value.position never reports a value larger than value.duration.
value.position never reports a value larger than value.duration.Updates minimum iOS implementation version to include a privacy manifest.
Updates example to call super.dispose() last.
super.dispose() last.Removes _ambiguate methods from code.
_ambiguate methods from code.Updates minimum supported SDK version to Flutter 3.13/Dart 3.1.
README.md.Updates minimum supported SDK version to Flutter 3.10/Dart 3.0.
Updates the example app: replaces ButtonBar with OverflowBar widget.
ButtonBar with OverflowBar widget.Adds isCompleted event to VideoPlayerEvent.
isCompleted event to VideoPlayerEvent.Adds pub topics to package metadata.
Deprecates VideoPlayerController.network factory method.
Uri typed factory method VideoPlayerController.networkUrl to avoid common mistakes with String URIs. The method
receives anUri instead of a String url.VideoPlayerController.network factory method.Synchronizes VideoPlayerValue.isPlaying with underlying video player.
VideoPlayerValue.isPlaying with underlying video player.Adds option to configure HTTP headers via VideoPlayerController to fix access to M3U8 files on Android.
VideoPlayerController to fix access to M3U8 files on Android.Updates iOS minimum version in README.
Updates links for the merge of flutter/plugins into flutter/packages.
Updates code for stricter lint checks.
Exposes VideoScrubber so it can be used to make custom video progress indicators
VideoScrubber so it can be used to make custom video progress indicatorsAdds compatibilty with version 6.0 of the platform interface.
* Fixes file URI construction.
Updates code for new analysis options.
no_leading_underscores_for_local_identifiers lint.Updates README via code excerpts.
Fixes avoid_redundant_argument_values lint warnings and minor typos.
Ignores unnecessary import warnings in preparation for upcoming Flutter changes.
Updates references to the obsolete master branch.
Fixes Android to correctly display videos recorded in landscapeRight (#60327).
Minor fixes for new analysis options.
Fixes library_private_types_in_public_api, sort_child_properties_last and use_key_in_widget_constructors lint warnings.
Updates minimum Flutter version to 2.10.
setClosedCaptionFile method to VideoPlayerController.Adds allowBackgroundPlayback to VideoPlayerOptions.
allowBackgroundPlayback to VideoPlayerOptions.Internal code cleanup for stricter analysis options.
Moves Android and iOS implementations to federated packages.
Avoid blocking the main thread loading video count on iOS.
Introduces setCaptionOffset to offset the caption display based on a Duration.
setCaptionOffset to offset the caption display based on a Duration.Updates README discussion of permissions.
Removes KVO observer on AVPlayerItem on iOS.
Fixes persisting of hasError even after successful initialize.
iOS: Validate size only when assets contain video tracks.
* Removes dependency on meta.
meta.iOS: Updates texture on seekTo.
seekTo.Adds compatibility with video_player_platform_interface 5.0, which does not include non-dev test dependencies.
video_player_platform_interface 5.0, which does not
include non-dev test dependencies.Changes the way the VideoPlayerPlatform instance is cached in the controller, so that it's no longer impossible to change after the first use.
VideoPlayerPlatform instance is cached in the
controller, so that it's no longer impossible to change after the first use.Fixes a regression where dragging a [VideoProgressIndicator] while playing would restart playback from the start of the video.
Initialize player when size and duration become available on iOS
Support to closed caption WebVTT format added.
Update minimum Flutter SDK to 2.5 and iOS deployment target to 9.0.
Fixed empty caption text still showing the caption widget.
Fix a disposed VideoPlayerController throwing an exception when being replaced in the VideoPlayer.
VideoPlayerController throwing an exception when being replaced in the VideoPlayer.Specify Java 8 for Android build.
Your coding agent can read these notes before it upgrades. Set up the MCP server →