byteark_player_flutter 2.0.1
byteark_player_flutter: ^2.0.1 copied to clipboard
ByteArkPlayerFlutter is a Flutter plugin for the ByteArk Player, designed to enable seamless video playback and advanced player management within your Flutter applications.
2.0.1 — 2026-06-10 #
2.0.0 — 2026-06-10 #
Breaking changes #
- expose aspectRatio config, drop hardcoded fill
- move credentials to --dart-define-from-file
- introduce ByteArkPlayerSource + sealed ByteArkDrm hierarchy
Added #
- forward Item metadata to each JS source (MOB-167)
- wire DRM end-to-end via WebSourcesMapper + new DrmConfigMapper (MOB-155)
- add mute and audio/subtitle track change listener events
- add web demo home that routes to every per-feature demo
- wire ByteArkAdsSettings onto the SDK's IMA ad plugin
Fixed #
- forward Item metadata through switchMediaSource too
- address MR !83 review findings
- reorder sources so Widevine plays on Chromium
- correct stale comment + harden DemoCredentials guard
- remove nested MaterialApp from vertical + lighthouse demos
- warn when switchMediaSource introduces DRM without Shaka loaded
- throw on missing sources key in selectAndroidSource
- enforce non-empty sources at runtime + surface iOS source-selection errors
- top-align Ads / Multi-DRM / Lighthouse players
- polish web demo layouts and wire new listener events
Changed #
- migrate demos to sources API (MOB-153)
- read sources list across all three platforms
- unify web demo player size via shared WebDemoPlayerSlot
Tooling #
- local Bundler path + refreshed Gemfile.lock + regen fastlane README
- address MR !86 review findings
- audit pass before develop integration
- document aspectRatio + sizing trade-off
- swap Vertical demo stream URL
- point Multi-DRM demo at production DRM endpoints
- move Quick start above Features
- fix stale references to renamed example classes
- one cross-platform demo home for iOS / Android / Web
- modernize README for 2.0 — restructure + slim + inline migration
- 2.0 migration guide + CONTEXT.md / README cleanup (MOB-156)
- mark mobile DRM live in Multi-DRM demo (MOB-154)
- add ADR-0004 + glossary entries for Source / DRM scheme
- remove subtitle size demo from iOS / Android / Web
- Merge branch 'feature/mob-139' into 'feature/mob-130'
- consolidate Web platform reference + cross-browser smoke checklist
- document Ads (IMA) on web + required CSP for ad servers
- document DRM on web (Widevine + FairPlay) + Shaka CSP
- set up Linear issue tracker config for engineering skills
- add web platform design ADRs (0002-0003) and ambiguities
- add CONTEXT.md domain glossary and ADR-0001 (Track vs Resolution)
- add pub.dev credentials rotation runbook
- enforce conventional commits and auto-generate CHANGELOG from MR titles
1.2.0 #
Breaking changes #
- Public API now uses an explicit
ByteArkPlayerController. The widget no longer exposesplay(),pause(),seekTo(),dispose(), etc. Create a controller, pass it toByteArkPlayer(controller: ...), and drive playback through the controller. See README for the migration example. - Minimum Flutter version raised to
>=3.22.0. - iOS: vendor SDKs bumped — requires
ByteArkPlayerSDK ~> 0.4.0,ByteArkPlayerSDKAdsPlugin ~> 0.2.0,ByteArkPlayerSDKLighthousePlugin ~> 0.2.0. Host apps need Xcode 17+ / Swift 6.3.x. Apps still on Xcode 16 must pin this plugin to1.1.6. - Android: toolchain raised — AGP 8, Kotlin 1.9,
compileSdk35, JVM 17.
Fixed #
- Event cross-firing between concurrent
ByteArkPlayerinstances: events now carry aplayerIdand each controller filters its own. - iOS
setSubtitle(null)(DISABLE_SUBTITLE) andswitchMediaSource(SWITCHED_MEDIA_SOURCE) no longer hang — the method-channelFuturenow completes. - iOS retain cycle in the
SEEK_TOcallback ([weak self]). - iOS replaced deprecated
UIWindow.keyWindowwithconnectedScenes. - Android: removed duplicate
registerFullScreenRunnablecall. - Android: removed dead
getCurrentPlayerItem()?.durationevaluation ingetDuration(). getCurrentTime()/getDuration()no longer throw when the native side returns null; they return0.getAvailablePlaybackSpeeds()now coerces integer-valued speeds via(num).toDouble()and surfaces failures as an empty list.MethodChannelvalue normalisation no longer stringifies scalars (preservesint/double/bool).- Listener callbacks
onPlaybackResolutionChangedandonPlaybackPlaylistItemChangedare now actually invoked when their events fire. - DRM:
cerfificateUrlfield renamed tocertificateUrl(legacy spelling kept as a deprecated alias for one release; map payload emits both keys).
Changed #
- Widget is now a
StatefulWidget. The previousStatelessWidgetform that leaked subscriptions on rebuild has been removed. - Cached the broadcast event stream so all controllers share one native registration.
- Deferred per-event payload deserialization to the relevant
switcharm.
Tooling #
flutter_lints^5.0.0,uuid^4.5.1.- Example app aligned: AGP 8.9.0, Gradle 8.14, JVM 17,
desugar_jdk_libs2.1.4. - Added Dart unit tests + a
test_dartstage to GitLab CI.
1.1.6 #
- Bug fixes and performance improvements.
1.1.5 #
- Update README.md
- Add Lighthouse metadata configuration
1.1.4 #
- Bug fixes and performance improvements.
1.1.3 #
- Added support for transparent subtitle background on iOS
1.1.2 #
- Improve architecture and performance efficiency
1.1.1 #
- Bug fixes and performance improvements.
1.1.0 #
- Major refactor: Simplified and restructured ByteArkPlayer listener and controller setup.
- Improved code clarity and separation of concerns.
- Easier integration and customization for developers.
- Lays foundation for upcoming feature extensions.
1.0.10 #
- Code quality improvement.
1.0.9 #
- Update the logic for setSubtitle and setAudio.
1.0.8 #
- Added more subtitle font size options.
- Added support for setting the subtitle position as a percentage (%) of the screen height.
1.0.7 #
- Implement ads event listener.
- Implement secure surface configuration.
- Implement subtitle configuration.
1.0.6 #
- Update README.md
1.0.5 #
- Code quality improvement.
1.0.4 #
- Update README.md
1.0.3 #
- Remove unnecessary public APIs.
- Improve code quality.
1.0.2 #
- Add demo integration guide.
- Update LICENSE file.
1.0.1 #
- Update README.md
1.0.0 #
- Initial release