NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3739 most downloaded on pub.dev
A Flutter widget for playing videos from YouTube, Vimeo, assets, and network sources — fully customizable and easy to integrate.
Last release 5 days ago
15 Sep 2026
Release timing varies
gaps range from 8 days to 2 months
Most releases are documented
notes for 41 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
1 years old
166 releases · first in 2025
Fixed a bug with youtube_explode_dart by forcing the use of YoutubeApiClient.androidVr when retrieving the video manifest.
🛠 Fix
youtube_explode_dart by forcing the use of YoutubeApiClient.androidVr when retrieving the video manifest.
Fixed an issue where autoplay videos would start even when the player was no longer visible on screen.
🛠 Fix
✨ New Features
timeoutDuration parameter to VideoSourceConfiguration
One column per month.
Add support for dynamically changing the video source after player initialization.
✨ New Features
loadVideoSource(VideoSourceConfiguration configuration) in OmniPlaybackController🛠 Fix * Fixed Youtube WebView Error
🛠 Fix
Show YouTube video thumbnail while controller initializes.
✨ New Features
🛠 Fix * Fixed CHANGELOG
🛠 Fix
Added video finish callback support.
✨ New Features
Added video finish callback support.
onFinished in VideoPlayerCallbacks.Added replay callback support.
onReplay in VideoPlayerCallbacks.See issue: #25
Fixed window.onMessage handling by checking if data is String before casting
🛠 Fix
Added keyboard arrow key support for web.
✨ New Features
Added showSwitchWhenOnlyAuto flag to PlayerUIVisibilityOptions.
✨ New Features
showSwitchWhenOnlyAuto flag to PlayerUIVisibilityOptions.
true (button is still shown with "Auto").false, the button will be hidden when only "Auto" is available.On YouTube WebView, in addition to showing "auto", the player now also displays the current playback quality
✨ New Features
Added support for playing videos from the device's local file system
✨ New Features
VideoSourceConfiguration.fileFixed incorrect duration display for YouTube videos in the video player
🛠 Fix
Fixed autoplay issue with Vimeo videos
🛠 Fix
Ensure quality menu is always visible, positioned above or below the video depending on available space.
🛠 Fix
🛠 Clean code
🛠 Clean code
Show HQ quality options for Live YouTube videos that not use webview.
🛠 Fix
webview.
Added custom aspect ratio support for both normal and fullscreen modes.
✨ New Features
Added custom aspect ratio support for both normal and fullscreen modes.
PlayerUIVisibilityOptions: customAspectRatioNormal and customAspectRatioFullScreen.Added fullscreen orientation support.
PlayerUIVisibilityOptions: fullscreenOrientation.null, the orientation is inferred from the video size (portrait if height > width, otherwise landscape).Added playback speed support to VideoSourceConfiguration and the player UI.
✨ New Features
Added playback speed support to VideoSourceConfiguration and the player UI.
initialPlaybackSpeed (default 1.0) and availablePlaybackSpeed (e.g., [0.5, 1, 1.5, 2]).showPlaybackSpeedButton to PlayerUIVisibilityOptions to toggle visibility of the speed button.playbackSpeedButton icon in VideoPlayerIconTheme for customization.YouTube videos are now playable on web platforms, in addition to mobile.
Fixed a bug where toggling back from fullscreen caused the status bar to turn black.
🛠 Fix
🛠 Fix * Fixed some imports
🛠 Fix
🛠 Fix * Fixed an aspect ratio issue. - See issue: #17
🛠 Fix
Updated supported video codecs to prevent playback errors on Android devices.
🛠 Fix
Fixed an issue on iOS where the Vimeo player failed to initialize.
🛠 Fix
Replaced flutter_inappwebview with webview_flutter for Vimeo playback.
✨ Improvements
Vimeo WebView Migration
flutter_inappwebview with webview_flutter for Vimeo playback.Fixed a problem where some YouTube videos failed to play due to no compatible streams being found or WebView initialization timing out.
🛠 Fix
Fixed an issue where the onControllerCreated callback was invoked before the video controller was fully constructed.
🛠 Fix
Fixed an issue where the onControllerCreated callback was invoked before the video controller was fully constructed.
Added controlsPersistenceDuration to PlayerUIVisibilityOptions.
✨ New Features
Added controlsPersistenceDuration to PlayerUIVisibilityOptions.
Duration(seconds: 3).Added support for disabling automatic orientation lock in fullscreen mode via PlayerUIVisibilityOptions.enableOrientationLock (default: true).
✨ New Features
Added support for disabling automatic orientation lock in fullscreen mode via
PlayerUIVisibilityOptions.enableOrientationLock (default: true).
When set to false, the player will not change or lock the device orientation in fullscreen,
allowing manual control over orientation changes (e.g., via your own fullscreen callbacks).
Fixed audio-video sync issue when seeking in YouTube and network videos.
🛠 Fix
YouTube WebView Fallback & Forced Mode
✨ New Features
YouTube WebView Fallback & Forced Mode
Added two new parameters inside VideoSourceConfiguration.youtube to improve robustness of YouTube playback:
enableYoutubeWebViewFallback (default: true) — enables an automatic fallback to a WebView-based YouTube player (via webview_flutter) when native playback using youtube_explode_dart fails.forceYoutubeWebViewOnly (default: false) — skips native extraction entirely and plays YouTube videos only through the WebView player.💡 Why this change?
The youtube_explode_dart library, used by default to extract YouTube stream URLs, can be temporarily blocked due to YouTube’s rate-limiting mechanism when too many requests are made.
When this happens:
With this update:
The player now supports HLS streams (.m3u8 files).
✨ New Features
.m3u8 files).preferredQualities and availableQualities parameters in VideoSourceConfiguration.network.Resolved an issue where Vimeo videos would not autoplay as expected.
🛠 Fixes
The customOverlayLayer field in CustomPlayerWidgets has been replaced by customOverlayLayers, a list of CustomOverlayLayer objects.
⚠️ Breaking Change
The customOverlayLayer field in CustomPlayerWidgets has been replaced by customOverlayLayers, a list of CustomOverlayLayer objects.
This allows adding multiple overlays on top of the video content, with fine-grained control over their rendering order.
Overlays are inserted into the rendering stack based on their level and order into list.
Added ignoreOverlayControlsVisibility flag to CustomOverlayLayer, this allows custom overlays to remain visible even when player controls are hidden (
ignoreOverlayControlsVisibility flag to CustomOverlayLayer, this allows custom overlays to remain visible even when player controls are hidden (e.g., during auto-hide).Custom Overlay Layering Support:
✨ New Features
CustomOverlayLayer, allowing insertion of custom widgets into the video player's visual stack.level, which determines its rendering order relative to built-in player elements.preferredQualities has changed from List to List to improve clarity and flexibility when selecting video quality.
⚠️ Breaking Change
preferredQualities has changed from List<int> to List<OmniVideoQuality> to improve clarity and flexibility when selecting video quality.OmniVideoQuality, replacing raw integer representations with a structured quality model.✨ New Features
showSwitchVideoQuality.availableQualities: List<OmniVideoQuality>? added to VideoSourceConfiguration of YouTube videos.🎨 Theming Enhancements
New theme properties added to OmniVideoPlayerTheme:
menuBackground — dropdown background colormenuText — color for unselected quality optionsmenuTextSelected — color for the selected qualitymenuIconSelected — checkmark color for selected qualityqualityChangeButton — icon used to open the quality menuqualitySelectedCheck — icon used to mark the selected optionNothing published for this version
Nothing published for this version
Fixed a bug where seeking in long YouTube videos caused noticeable delays
Improvement: autoplay is now managed correctly for better user experience
Feature: Added gesture-based fast-forward (enableForwardGesture)
enableForwardGesture)enableBackwardGesture)enableExitFullscreenOnVerticalSwipe)Fix: Fallback to null if GlobalPlaybackController is not found
null if GlobalPlaybackController is not foundFix bug when useGlobalPlaybackController: false
useGlobalPlaybackController: falseResolve pub.dev analysis issues
* Initial development release
Your coding agent can read these notes before it upgrades. Set up the MCP server →