omni_video_player
A Flutter widget for playing videos from YouTube, Vimeo, assets, and network sources — fully customizable and easy to integrate.
5.0.1
4.1K downloads/mo
#4142 most downloaded on pub.dev
leonardmatasel/omni_video_player
What this package is like to depend on
Last release 5 days ago
19 Aug 2026
Release timing varies
gaps range from 8 days to 2 months
Most releases are documented
notes for 113 of 153 stable releases
Nothing withdrawn
no release was ever pulled
1 years old
161 releases · first in 2025
138 releases in the last 12 months
see the full history below
Release timeline
161 releases · Jun 2025 to Aug 2026Releases
latest 60 of 161-
5.0.119 Aug 2026Release notes
Open source →🧹 Static analysis
- Removed an unused catch stack-trace variable so the package passes pub.dev static analysis cleanly.
-
5.0.010 Aug 2026Release notes
Open source →🎛️ YouTube WebView controls — grouped config (BREAKING)
- YouTube WebView flags moved into
VideoSourceConfiguration.youtube(webView: YoutubeWebViewConfiguration(...)):forceWebViewOnly(wasforceYoutubeWebViewOnly),enableFallback(wasenableYoutubeWebViewFallback).useNativeControls(new, defaulttrue): use YouTube's native play/pause + double-tap (our bottom bar stays overlaid). Setfalsefor the previous fully-custom controls.onExternalLink: react to in-player links (Watch on YouTube, title, …) — they're always blocked.
Migration: move
forceYoutubeWebViewOnly/enableYoutubeWebViewFallbackintowebView:; setuseNativeControls: falseto keep the old custom controls.🐛 Bug Fixes — playback reliability (#82, #78)
- Videos now resume correctly after seeking, instead of stalling or getting stuck on an error (#82).
- YouTube and Vimeo recover on their own from the random "sometimes it plays, sometimes it doesn't" failures — no more restarting the app (#78).
- Smoother playback, faster loading, and less memory use when videos scroll off screen.
- YouTube in WebView now loads reliably, no longer pauses itself on the first play, and captions stay off.
- WebM videos now show the correct duration and progress bar (no more stuck at
00:00or a permanent replay button). - Playlists in fullscreen: fixed the freeze/black screen and the flickering next/previous buttons when changing video.
- Fullscreen controls now respect the notch / safe area.
- Text selection inside the video players is disabled.
- YouTube WebView flags moved into
-
4.0.216 Jun 2026Release notes
Open source →🐛 Bug Fixes — fullscreen orientation (#75)
- Leaving fullscreen no longer forces all orientations, which previously overrode an app-wide lock such as
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]). - Added
PlayerUIVisibilityOptions.restoreOrientationsAfterFullscreen: set it to your app's orientations (e.g.[DeviceOrientation.portraitUp]) and they are reapplied automatically when the player exits fullscreen. - Default is
null, which keeps the previous behavior (restore all orientations) — non-breaking.
- Leaving fullscreen no longer forces all orientations, which previously overrode an app-wide lock such as
-
4.0.116 Jun 2026Release notes
Open source →🐛 Bug Fixes — kids/restricted YouTube playback
- When the
androidVrmanifest fails (kids/restricted videos), fall back to the default InnerTube clients and keep muxed streams only (~360p), avoiding the HTTP 403 that adaptive video+audio streams return in ExoPlayer for these videos. - Skip the "no audio streams" error when the selected muxed stream already includes
mp4aaudio. - Transient/network failures on the
androidVrmanifest are no longer treated as restricted: they are retried instead of triggering the mux-only fallback, so normal videos are never silently downgraded to 360p on a single network blip. - Normal videos are unchanged:
androidVrmanifest with the existing Android/iOS stream selection (720p+ on Android).
- When the
-
4.0.016 Jun 2026Release notes
Open source →🎬 Playlist
- New
OmniVideoPlaylistwidget withOmniPlaylistController,PlaylistConfiguration, andPlaylistCallbacks. - Plays an ordered queue of videos with on-video previous/next buttons. Optional
autoAdvance(advance automatically when a video finishes) andloop(wrap around the ends). - Purely additive to single-video behaviour. Also adds value equality to
VideoSourceConfiguration.
🎨 Theming (breaking)
- BREAKING: Renamed
VideoPlayerColorScheme.playPauseBackground→controlButtonBackgroundandplayPauseIcon→controlButtonIcon. These colors are shared by the play/pause, replay, loader and skip-indicator buttons, and now the playlist prev/next buttons too. Migration: rename these parameters in yourVideoPlayerColorScheme(...)/.copyWith(...)calls. - Playlist prev/next buttons are fully themeable, consistent with the other control buttons: colors (
controlButtonBackground/controlButtonIcon), icons (VideoPlayerIconTheme.skipPrevious/skipNext), and accessibility labels (VideoPlayerAccessibilityTheme.previousTrackLabel/nextTrackLabel).
- New
-
4.0.0-beta10 Dec 2025 pre-releaseNothing published for this version
-
3.9.410 Apr 2026Release notes
Open source →✨ Stability & Bug Fixes
- Safe Disposal Handling:
- Added comprehensive
isDisposedguards to all controller setters (volume,duration,playing, etc.) to prevent "ChangeNotifier used after being disposed" crashes during global resource cleanup. - Improved
GlobalVolumeSynchronizerto safely ignore disposed controllers during global volume updates. - Added safety checks for JavaScript evaluation in WebView-based controllers after disposal.
- Added comprehensive
- Safe Disposal Handling:
-
3.9.310 Apr 2026Release notes
Open source →✨ New Features & Bug Fixes
- Improved Resource Management:
- Added
isDisposedcheck to all controllers to preventChangeNotifiererrors after disposal. - Enhanced
OmniVideoPlayerViewto safely handle controller disposal and listener removal.
- Added
- Auto-Reinitialization:
- Added
VisibilityDetectortoOmniVideoPlayerInitializerto automatically re-initialize players that were disposed or failed when they become visible again. - This ensures a seamless user experience when scrolling back to a video after a global memory cleanup.
- Added
- Improved Resource Management:
-
3.9.210 Apr 2026Release notes
Open source →✨ New Features
- Hardware Decoder Auto-Recovery:
- Added a global tracking system for
OmniPlaybackControllerinstances. - Implemented automatic cleanup and retry logic when Android reports
NO_MEMORYorCodecException(error0xfffffff4). - Added
releaseAllResources()toGlobalPlaybackControllerto force-dispose all active players in critical memory situations.
- Added a global tracking system for
- Hardware Decoder Auto-Recovery:
-
3.9.109 Apr 2026Release notes
Open source →🛠 Fix
-
Fixed replay race condition on all player types (YouTube, Vimeo, WebM, network).
replay()now runs sequentially (pause → seekTo(0) → play) instead of in parallel, preventing the video from stalling at position 0 with the wrong button state.
-
Fixed
autoMuteOnStart+autoPlayignored on Vimeo mobile.play(),mute(),unMute(), andvolumesetter now use_executeOrQueueso deferred actions are correctly applied once the WebView is ready.- Fixed a bug where the volume setter was passing the old value (
$volume) instead of the new value ($value) to the JS player.
-
-
3.9.012 Mar 2026Release notes
Open source →✨ New Features
- Feat: New interactive Web volume slider (
VolumeSliderControl) with hover support. - Breaking (Theme): Renamed
VideoPlayerOverlayThemetoVideoPlayerBackdropTheme. - Theme: Introduced
VideoPlayerMenuTheme,menuBorderRadius,volumeSliderThumbShape, and new volume-specific colors inVideoPlayerColorScheme.
- Feat: New interactive Web volume slider (
-
3.8.811 Mar 2026 -
3.8.708 Mar 2026Release notes
Open source →🛠 Fix
- Fixed playback controls visibility and interaction issues on Web.
- See issue: #70
- Fixed playback controls visibility and interaction issues on Web.
-
3.8.606 Mar 2026Release notes
Open source →✨ New Features
- Added
activeGradientparameter toVideoPlayerColorSchemeintoOmniVideoPlayerThemeData
- Added
-
3.8.505 Mar 2026 -
3.8.405 Mar 2026Nothing published for this version
-
3.8.305 Mar 2026Release notes
Open source →🛠 Fix
- Fixed an error when switching to fullscreen in youtube live video
- See issue: #72
- Fixed an error when switching to fullscreen in youtube live video
-
3.8.202 Mar 2026 -
3.8.126 Feb 2026 -
3.8.026 Feb 2026Release notes
Open source →✨ New Features
- Added native HTML iframe support for Vimeo on Flutter Web
- See issue: #67
- Added native HTML iframe support for Vimeo on Flutter Web
-
3.7.426 Feb 2026Release notes
Open source →✨ New Features
- Added
httpHeadersparameter toVideoSourceConfiguration.network()- See issue: #68
- Added
-
3.7.326 Feb 2026Release notes
Open source →🛠 Fix
- Fixed an issue where YouTube live videos were failing to play.
- See issue: #66
- Fixed an issue where YouTube live videos were failing to play.
-
3.7.213 Jan 2026 -
3.7.110 Jan 2026Release notes
Open source →✨ New Features
- Added
autoFullScreenAtStartparameter toVideoSourceConfiguration.- This flag controls whether the video should automatically switch to fullscreen mode as soon as the player initialization is complete.
- Default:
false.
- Added
-
3.7.010 Jan 2026Release notes
Open source →🛠 Fix
- Fixed audio-video synchronization issues for YouTube videos.
- Resolved desynchronization occurring when seeking or changing playback speed.
- See issue: #64
- Fixed audio-video synchronization issues for YouTube videos.
-
3.6.009 Jan 2026Release notes
Open source →✨ New Features
- Added
pauseWhenOutOfViewparameter toVideoSourceConfiguration.- This flag controls whether the video should automatically pause when the player is scrolled out of the viewport or is no longer visible.
- Default:
true(the video will pause when it leaves the view).
- Added
-
3.5.324 Dec 2025 -
3.5.223 Dec 2025 -
3.5.119 Dec 2025Nothing published for this version
-
3.5.018 Dec 2025Release notes
Open source →- Fixed minor bugs on YouTube Webview isFinished
- Add support to webm on iOS (with a WebView)
-
3.4.510 Dec 2025Release notes
Open source →- Fixed minor bugs:
- Resolved video/audio desynchronization when using
seekTo - Improved WebView rendering performance
- Resolved video/audio desynchronization when using
- Fixed minor bugs:
-
3.4.424 Nov 2025 -
3.4.4-beta04 Dec 2025 pre-releaseNothing published for this version
-
3.4.323 Nov 2025 -
3.4.223 Nov 2025Nothing published for this version
-
3.4.121 Nov 2025Release notes
Open source →✨ New Features
- Added new
enableZoomparameter inPlayerUIVisibilityOptionsto allow pinch-to-zoom gestures on the video player (default:false). - Fixed some minor bugs
- Added new
-
3.4.1-beta21 Nov 2025 pre-releaseNothing published for this version
-
3.4.021 Nov 2025Nothing published for this version
-
3.3.2321 Nov 2025 -
3.3.2221 Nov 2025Nothing published for this version
-
3.3.2121 Nov 2025Nothing published for this version
-
3.3.2021 Nov 2025Nothing published for this version
-
3.3.1921 Nov 2025Nothing published for this version
-
3.3.1821 Nov 2025Nothing published for this version
-
3.3.1721 Nov 2025Nothing published for this version
-
3.3.1621 Nov 2025Nothing published for this version
-
3.3.1521 Nov 2025Nothing published for this version
-
3.3.1419 Nov 2025Nothing published for this version
-
3.3.1318 Nov 2025Release notes
Open source →🛠 Fix
-
Fixed the issue where unlisted YouTube videos kept loading.
- See issue: #50
-
-
3.3.13-beta18 Nov 2025 pre-releaseNothing published for this version
-
3.3.1218 Nov 2025Release notes
Open source →✨ New Features
- Added new
fitVideoToBoundsparameter inPlayerUIVisibilityOptionsto control whether the video fills the available area (default:true).
🛠 Fix
- Minor stability and UI fixes.
- Added new
-
3.3.1118 Nov 2025Nothing published for this version
-
3.3.1018 Nov 2025Nothing published for this version
-
3.3.918 Nov 2025Nothing published for this version
-
3.3.818 Nov 2025Nothing published for this version
-
3.3.718 Nov 2025Nothing published for this version
-
3.3.617 Nov 2025Nothing published for this version
-
3.3.6-beta17 Nov 2025 pre-releaseNothing published for this version
-
3.3.513 Nov 2025Release notes
Open source →✨ New Features
-
Added scrubbing thumbnail preview in the video player UI.
- Introduced a new
showScrubbingThumbnailPreviewparameter inPlayerUIVisibilityOptions. - This parameter allows developers to enable or disable the small preview thumbnail that appears when dragging the seek bar.
- Default value is
true, ensuring the preview is shown unless explicitly turned off.
- Introduced a new
-
-
3.3.5-beta13 Nov 2025 pre-releaseNothing published for this version