better_player_plus 2.0.1
better_player_plus: ^2.0.1 copied to clipboard
Advanced video player based on video_player and Chewie. It's solves many typical use cases and it's easy to run.
2.0.1 #
Fixes
- Next-video countdown: only the badge is tappable now (Material and Cupertino controls). Previously the whole player area was clickable during the countdown and tapping anywhere skipped to the next video
skipForwardno longer throws when the video duration is unknown- Pending seek position is reset when the data source changes, so a shorter next video no longer appears stuck at or past its end
showPlaceholderUntilPlay: a paused source change no longer hides the video; it is hidden only while waiting for play is requested
Changes
- Updated dependencies:
material_uito ^1.8.0,cupertino_uito ^1.1.4,wakelock_plusto ^1.8.2 - Added placeholder regression tests (
test/better_player_placeholder_test.dart)
2.0.0 #
Breaking changes
- Minimum SDK raised to Dart
>=3.13.0and Flutter>=3.47.0 - Minimum iOS deployment target raised from 13.0 to 15.0 (podspec and Swift Package)
- Material and Cupertino widgets now come from the
material_uiandcupertino_uipackages instead ofpackage:flutter/material.dart/package:flutter/cupertino.dart - Codebase migrated to Dart 3.13 primary constructor syntax
Changes
- Upgraded Android Media3 dependencies to 1.11.1
- Upgraded
wakelock_plusto ^1.8.1 andflutter_widget_from_html_coreto ^0.17.4 - Example app now targets iOS 15.0
- Fixed iOS stall check resuming a player that was paused while it was still buffering (a pause landing in the first second of playback was undone, and looping videos kept streaming off screen)
- iOS now honours
BetterPlayerBufferingConfiguration.maxBufferMsthroughAVPlayerItem.preferredForwardBufferDurationwhen a bounded value is passed; the default keeps AVFoundation's own behaviour
1.4.1 #
- Added support for Built-in Kotlin on Android (AGP 9.0+) while maintaining full backward compatibility with Flutter 3.41.0+ and AGP < 9 (#128)
- Fixed iOS native player memory leak on dispose: unregister
dataSourceDict, break FlutterEventChannel retain cycle, detach player layers, and clean up notification center (#129) - Fixed iOS latent KVO crash on deallocation: weakly track
observedItemto safely unregister observers, and ensure observers are removed beforecurrentItemchecks inclear()(#129) - Preserved iOS background transition notification handler when playback ends or loops (#129)
- Upgraded Android Media3 dependencies to 1.11.0
1.4.0 #
- Inlined and modernized
visibility_detectorto remove the unmaintained external dependency and prevent Flutter/Dart version conflicts - Fixed static analysis issue (
prefer_if_elements_to_conditional_expressions) restoring full 160/160 pub points - Optimized Android native dependencies by removing unused
media3-datasource-cronet,media3-session, and obsolete artifacts - Added Android R8 / Proguard consumer rules (
consumer-rules.pro) for safe and effective release shrinking - Fixed Android Activity memory leak on detachment (
onDetachedFromActivity) - Fixed potential event queue leak on player disposal in Android (
BetterPlayer.kt) - Hardened
BetterPlayerListVideoPlayeragainst race conditions during fast list scrolling/disposal - Optimized package archive size on pub.dev by excluding heavy example native runners and test media in
.pubignore
1.3.5 #
- Fixed Android hardware decoder failure by adding software decoder fallback (thanks @ZhaosongRen)
- Fixed Android play/pause notification state not syncing from native player changes (thanks @mmeshrif)
- Fixed
NullPointerExceptionin_BetterPlayerVideoFitWidgetState.disposeand unassigned ClearKeyDrmSessionManageron Android (thanks @vivek995378) - Fixed Simplified Chinese translations (thanks @zs)
1.3.4 #
- Fixed iOS build error: duplicate
BetterPlayerPlugininterface definition caused by CocoaPods exposing ObjC header alongside Swift-generated header; excludedBetterPlayerPlugin.h/mfrom podspec source files - Fixed iOS Profile build configuration missing
Profile.xcconfig, causing CocoaPods base config conflict - Fixed Android example
build.gradle.ktsmissingorg.jetbrains.kotlin.androidplugin, causing unresolvedkotlin { compilerOptions }block
1.3.3 #
- Fixed iOS podspec version mismatch (was stuck at
1.3.0), now synced withpubspec.yaml - Fixed initial track setup not awaiting
setTrack, which could race with data source setup
1.3.2 #
- Fixed iOS HLS playback with
useCache: truefor modern fMP4/CMAF streams (#EXT-X-MAP,.m4s, external audio renditions) by playing HLS directly throughAVURLAssetinstead of the localhost reverse proxy - Fixed iOS Swift compile errors: aligned
Cachedependency to 6.x for both CocoaPods and SPM (Cache 7.x is not published on CocoaPods) and restored theAVURLAssetHTTPHeaderFieldsKeystring literal - Fixed player layout not refreshing after manual HLS/DASH quality track switch:
setTracknow updates the reported video size and emits achangedTrackcontroller event - Fixed duplicate
@interface BetterPlayerPlugindefinition in the iOS plugin header - Hardened iOS HLS header conversion with typed
String/NSNumberhandling - Removed unused
HLSCachingReverseProxyServer,GCDWebServerandPINCachedependencies from the iOS podspec - Optimized iOS BoxFit handling with scheduled application
CacheManager.setup()is now a deprecated no-op on iOS (no HLS proxy setup needed)
1.3.1 #
- Updated iOS dependencies and cleaned up stale SPM
Package.resolvedpins - Minor cleanup in
better_player_with_controls.dart
1.3.0 #
- Added iOS Swift Package Manager (SPM) support
- Added
Package.swiftto support native SPM integration - Migrated iOS plugin source files from
Classes/tobetter_player_plus/Sources/better_player_plus/for SPM compatibility - Cleaned up legacy CocoaPods integration from the iOS example project for smoother SPM-based builds
1.2.1 #
- Fixed MissingPluginException for
setAspectRatioon Android by guarding the call withPlatform.isIOS
1.2.0 #
- Dart SDK updated → 3.11.0, Flutter SDK updated → 3.41.0
- Android Media3 updated → 1.10.0
- Fixed controlsVisibilityStream feedback loop by guarding against duplicate state updates
- Fixed controlsVisibilityStream not emitting when UI auto-hides
- Fixed aspect ratio issues for iOS AVPlayer
- Fixed audio track override not being cleared before applying a new one
- Preserved iOS playback speed across player actions (seek, pause, resume)
- Fixed HLS parsing for default audio source selection in HLS streams
- Added iOS wakelock (disable auto-sleep) support during playback
- Resolved all dart analyze warnings and errors (zero issues)
1.1.5 #
- Fixed error in WebVTT file parser for subtitle handling
- Fixed issue where 'hideFullscreen' event was not fired when exiting fullscreen mode
- Improved subtitle parsing reliability and error handling
1.1.4 #
- Added custom controls configuration feature for enhanced player customization
- Fixed Android Kotlin build errors and compatibility issues
- Fixed player reference usage when accessing DRM, timeline, and video format
- Improved DrmSessionManagerProvider initialization with safe let expressions
- Enhanced video format access with proper null safety guards
- Minor code improvements and optimizations
1.1.3 #
- Documentation improvements with enhanced README formatting and structure
- Added LinkedIn contact information for Flutter-related inquiries
- Code cleanup: Removed unnecessary TODO comments
- Improved text readability and formatting throughout documentation
- Minor version bump with maintenance updates
1.1.2 #
- Fixed missing type annotation in method_channel_video_player.dart
- Updated iOS podspec metadata with proper project information
- Fixed example app dependency version constraints
- Improved code quality and static analysis compliance
- Enhanced project documentation and version consistency
1.1.1 #
- iOS implementation migrated from Objective-C to Swift
- Fixed Swift compiler errors and deprecated API usage
- Removed deprecated GLKit dependency
- Updated UIApplication.keyWindow usage for iOS 13+ compatibility
- Improved plugin registration with proper Objective-C bridging
- Enhanced code maintainability and modern iOS development practices
- Special thanks to Cursor AI for assistance with the migration
1.1.0 #
- Flutter SDK updated → 3.35.0
- Dart SDK updated → 3.9.0
- Gradle updated → 8.13.0
- Kotlin Gradle Plugin updated → 2.2.20
- Android Media3 Player updated → 1.8.0
- Minimum iOS version raised to → 13
- Package updates and compatibility improvements
1.0.8 #
- package update
1.0.7 #
- package update
1.0.6 #
- package update.
- Kotlin version update to 1.9.22
- Media3 version update to 1.3.1
- gradle version update to 8.1.4
- targetSdkVersion update to 34
1.0.5 #
- package update
1.0.4 #
- ios player bug fix
1.0.3 #
- ExoPlayer migration Media3
1.0.2 #
- bug fix
1.0.1 #
- bug fix
1.0.0 #
- Initial release.