omni_video_player 2.3.21
omni_video_player: ^2.3.21 copied to clipboard
A Flutter widget for playing videos from YouTube, Vimeo, assets, and network sources — fully customizable and easy to integrate.
2.3.21 #
🛠 Fix
- Update exports
2.3.20 #
🛠 Fix
- Fix issue with error into initializer
2.3.19 #
✨ New Features
-
Add
showOpenExternallyInErrorPlaceholderoption toPlayerUIVisibilityOptions- When set to
true, displays a “Open Externally” button inside the error placeholder if video playback fails. - Defaults to
true. - Enables users to open the video in an external app or browser when the player encounters an error.
- When set to
2.3.18 #
✨ New Features
-
Add
onSeekRequestcallback toVideoPlayerCallbacks- Invoked before a seek operation is performed.
- Returns a
boolindicating whether the seek should proceed (true) or be cancelled (false). - Useful for implementing custom seek restrictions or validations.
- ⚠️ Available only for videos that are not rendered inside a WebView
2.3.17 #
🛠 Fix
- Fix issue with swipe to exit from fullscreen
2.3.16 #
🛠 Fix
- Fix issue with seeking when the video has ended
- Previously, attempting to seek after the video finished could cause unexpected behavior.
- Now, seeking works correctly even when the video is at its end.
2.3.14 #
✨ New Features
- Add
showBottomControlsBarOnEndedFullscreenoption toPlayerUIVisibilityOptions- When set to
true, the video bottom controls bar is displayed in fullscreen mode after the video ends. - Defaults to
false.
- When set to
2.3.13 #
🛠 Fix
showPlayPauseReplayButtonoption toPlayerUIVisibilityOptions- Applies only when not in full screen
2.3.12 #
✨ New Features
- Add
showPlayPauseReplayButtonoption toPlayerUIVisibilityOptions- Allows controlling the visibility of the main play / pause / replay overlay button (centered on the video)
- Defaults to
true
2.3.11 #
🛠 Fix
- Fixed a bug with
youtube_explode_dartby forcing the use ofYoutubeApiClient.androidVrwhen retrieving the video manifest.- See issue: youtube_explode_dart #361
2.3.10 #
🛠 Fix
- Fixed an issue where autoplay videos would start even when the player was no longer visible on screen.
- See issue: #29
✨ New Features
- Added
timeoutDurationparameter toVideoSourceConfiguration- Maximum wait time before considering playback failed
- Defaults to 6 seconds
- In the case of YouTube, the player will proceed with the fallback if enabled (default)
- See issue: #33
2.3.9 #
✨ New Features
- Add support for dynamically changing the video source after player initialization.
- Introduced
loadVideoSource(VideoSourceConfiguration configuration)inOmniPlaybackController - Lets you seamlessly switch between YouTube, Vimeo, network, or asset sources without rebuilding the widget — or simply load a different video
- See issue: #26
- Introduced
2.3.8 #
🛠 Fix
- Fixed Youtube WebView Error
2.3.7 #
✨ New Features
- Show YouTube video thumbnail while controller initializes.
- Thumbnail is displayed immediately when available
- See issue: #28
2.3.6 #
🛠 Fix
- Fixed CHANGELOG
2.3.5 #
✨ New Features
-
Added video finish callback support.
- Introduced
onFinishedinVideoPlayerCallbacks. - Triggered once when a video reaches the end of playback.
- Introduced
-
Added replay callback support.
- Introduced
onReplayinVideoPlayerCallbacks. - Triggered when the user presses the replay button after video completion.
- Introduced
-
See issue: #25
2.3.4 #
🛠 Fix
- Fixed window.onMessage handling by checking if data is String before casting
- See issue: #24
2.3.3 #
✨ New Features
- Added keyboard arrow key support for web.
- Users can now use the left (←) and right (→) arrow keys to skip backward and forward during playback.
- Skip duration follows the same logic as double-tap gestures (5s, 10s, 30s depending on consecutive presses).
- See issue: #23
2.3.2 #
✨ New Features
- Added
showSwitchWhenOnlyAutoflag toPlayerUIVisibilityOptions.- Controls whether the Switch Quality button is displayed when no qualities are available and only the "Auto" option would appear in the dialog.
- Default:
true(button is still shown with "Auto"). - If set to
false, the button will be hidden when only "Auto" is available. - See issue: #22
2.3.1 #
✨ New Features
- On YouTube WebView, in addition to showing "auto", the player now also displays the current playback quality
- See issue: #22
2.3.0 #
✨ New Features
- Added support for playing videos from the device's local file system
- New factory:
VideoSourceConfiguration.file - See issue: #18
- New factory:
2.2.6 #
🛠 Fix
- Fixed incorrect duration display for YouTube videos in the video player
- See issue: #15
2.2.5 #
🛠 Fix
- Fixed autoplay issue with Vimeo videos
2.2.4 #
🛠 Fix
- Ensure quality menu is always visible, positioned above or below the video depending on available space.
- See issue: #22
2.2.3 #
🛠 Clean code
2.2.1 #
✨ New Features
-
Added custom aspect ratio support for both normal and fullscreen modes.
- New properties in
PlayerUIVisibilityOptions:customAspectRatioNormalandcustomAspectRatioFullScreen. - If not provided, the aspect ratio defaults to the one from the video controller.
- New properties in
-
Added fullscreen orientation support.
- New property in
PlayerUIVisibilityOptions:fullscreenOrientation. - If
null, the orientation is inferred from the video size (portrait if height > width, otherwise landscape).
- New property in
2.2.0 #
✨ New Features
-
Added playback speed support to
VideoSourceConfigurationand the player UI.- New properties:
initialPlaybackSpeed(default1.0) andavailablePlaybackSpeed(e.g.,[0.5, 1, 1.5, 2]). - Added
showPlaybackSpeedButtontoPlayerUIVisibilityOptionsto toggle visibility of the speed button. - Added
playbackSpeedButtonicon inVideoPlayerIconThemefor customization. - See issue: #16
- New properties:
-
YouTube videos are now playable on web platforms, in addition to mobile.
2.1.5 #
🛠 Fix
- Fixed a bug where toggling back from fullscreen caused the status bar to turn black.
- See issue: #20
2.1.4 #
🛠 Fix
- Fixed some imports
2.1.2 #
🛠 Fix
- Updated supported video codecs to prevent playback errors on Android devices.
- See issue: #17
2.1.1 #
🛠 Fix
- Fixed an issue on iOS where the Vimeo player failed to initialize.
2.1.0 #
✨ Improvements
-
Vimeo WebView Migration
- Replaced
flutter_inappwebviewwithwebview_flutterfor Vimeo playback.
- Replaced
2.0.11 #
🛠 Fix
- Fixed a problem where some YouTube videos failed to play due to no compatible streams being found
or WebView initialization timing out.
- See issue: #13
2.0.10 #
🛠 Fix
-
Fixed an issue where the
onControllerCreatedcallback was invoked before the video controller was fully constructed.- This caused incorrect initialization behavior for WebView videos.
2.0.9 #
✨ New Features
-
Added
controlsPersistenceDurationtoPlayerUIVisibilityOptions.- This property controls the duration the video player controls remain visible after user interaction while the video is playing.
- After this duration without interaction, the controls are hidden automatically.
- Default value is
Duration(seconds: 3).
2.0.8 #
✨ 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).
2.0.7 #
🛠 Fix
- Fixed audio-video sync issue when seeking in YouTube and network videos.
2.0.6 #
✨ New Features
-
YouTube WebView Fallback & Forced Mode
-
Added two new parameters inside
VideoSourceConfiguration.youtubeto improve robustness of YouTube playback:enableYoutubeWebViewFallback(default:true) — enables an automatic fallback to a WebView-based YouTube player (viawebview_flutter) when native playback usingyoutube_explode_dartfails.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:
- Extraction fails for all videos (even those not previously blocked).
- The issue typically resolves after waiting several hours.
- Using a VPN does not bypass the block.
With this update:
- If fallback is enabled, the player transparently switches to the WebView-based implementation, ensuring playback continues without waiting for the rate-limit block to expire.
2.0.5 #
✨ New Features
- HLS (network) video support:
- The player now supports HLS streams (
.m3u8files). - Allows quality selection for network-based HLS videos, just like with YouTube.
- Controlled via the same
preferredQualitiesandavailableQualitiesparameters inVideoSourceConfiguration.network. - Automatically selects the best matching stream based on preferences or falls back to the highest quality.
- The player now supports HLS streams (
2.0.4 #
🛠 Fixes
- Resolved an issue where Vimeo videos would not autoplay as expected.
- Fixed a bug causing the video to pause unexpectedly Issue #8 on GitHub
2.0.3 #
⚠️ 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.
2.0.2 #
- Added
ignoreOverlayControlsVisibilityflag toCustomOverlayLayer, this allows custom overlays to remain visible even when player controls are hidden (e.g., during auto-hide).
2.0.1 #
✨ New Features
- Custom Overlay Layering Support:
- Introduced
CustomOverlayLayer, allowing insertion of custom widgets into the video player's visual stack. - Each overlay can now specify a
level, which determines its rendering order relative to built-in player elements.
- Introduced
2.0.0 #
⚠️ Breaking Change
preferredQualitieshas changed fromList<int>toList<OmniVideoQuality>to improve clarity and flexibility when selecting video quality.- Introduced new model:
OmniVideoQuality, replacing raw integer representations with a structured quality model.
✨ New Features
- YouTube quality switching:
- Added support for changing video quality in YouTube playback.
- Controlled via the new flag:
showSwitchVideoQuality. - New parameter:
availableQualities: List<OmniVideoQuality>?added toVideoSourceConfigurationof 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 option
1.0.6 #
- Fixed a bug where seeking in long YouTube videos caused noticeable delays
1.0.5 #
- Improvement: autoplay is now managed correctly for better user experience
- No parameter changes needed—just update the package to fix the issue
1.0.4 #
- Feature: Added gesture-based fast-forward (
enableForwardGesture) - Feature: Added gesture-based rewind (
enableBackwardGesture) - Feature: Added gesture to exit fullscreen on vertical swipe (
enableExitFullscreenOnVerticalSwipe) - All new gesture flags are enabled by default
1.0.3 #
- Fix: Fallback to
nullifGlobalPlaybackControlleris not found
1.0.2 #
- Fix bug when
useGlobalPlaybackController:false
1.0.1 #
- Resolve pub.dev analysis issues
1.0.0 #
- Initial development release