mohe_native_player 1.8.0
mohe_native_player: ^1.8.0 copied to clipboard
A Flutter native video player plugin for iOS and Android with full-featured controls, HLS/DASH support, danmaku, DLNA casting, PiP, and more.
1.8.0 #
- feat: add
PlayerController.setFitMode(PlayerFitMode)— switch fill mode at runtime without rebuilding the widget. - feat(ios): fire
videosizechangeevent with{width, height}on video ready and VLC video size change. - feat(ios): ad mode now allows
videosizechangeevent through (previously blocked). - fix(android): danmaku settings panel — SeekBar thumb clipped on landscape; add padding equal to thumb radius and disable
clipChildrenon parent containers; addWindowInsetslistener for display cutout / waterfall right safe-inset. - chore(ios): bump
ILOOK_PLAYER_VERSIONto1.0.359.
1.7.0 #
- feat: add
PlayerFitModeenum (contain/cover) andPlayerView.fitModeparameter — passed viacreationParamsto native layer; cover = fill screen (short drama), contain = letterbox (default). - feat(ios): sync native core to v1.0.348 —
isHostFlutterflag blocks shortDrama auto-fullscreen black screen;setupViewWithFrame:attributes:dispatchescreationParamsfit-mode tosetFitMode:. - feat(ios):
FullscreenManagerenhancements for Flutter hosting — suppresses auto-rotate onisHostFlutter, correct safe-area handling inFullscreenPlayerViewController. - feat(android):
setPlayerMode(shortDrama)enters immersive fullscreen (hides status/nav bar, addsKEEP_SCREEN_ON);ShortDramaImmersiveCoordinatoruses activity-level ref counting so multiplePlayerViewinstances cooperate. - feat(android):
creationParamsfit-modemapped toCENTER_CROP(cover) orFIT_CENTER(contain) onTextureView.
1.6.0 #
- feat: add
PlayerPreload/PreloadRequestDart API — priority-based video preload withpreload,cancel,cancelExcept,configure,shutdownAllPlayers. - feat(android): add
ILookPreloadManager/ILookPreloadTask/ILookCacheKey— Android preload system aligned with iOS, with disk cache, priority queue, and inflight preemption. - feat(android):
PlayerPluginadds plugin-levelglobalChannelforshutdownAllPlayers,preloadVideos,cancelPreload,cancelPreloadExcept,configurePreload. - feat(android):
DFEncryptedPlayeradd full lifecycle —setDataSource,prepare,start,pause,stop,seekTo,getState,getDuration,getCurrentPosition. - fix(android):
FFDecryptMuxerstability improvements.
1.5.1 #
- feat(ios): sync ILookPlayerCore to v1.0.322 — enable FFmpeg Class Cluster (auto-routes to
DecryptFileAVPlayer), add offline-encryption engine (DFEnc*/DFURLSessionSourceDownloader/FFVideoPacketQueue). - feat:
playWithAdsadds optionallandingUrlparameter for "了解详情" ad tap-through. - feat: expose
shutdownAllPlayersvia global Flutter channel for batch player cleanup. - fix(android): add
setControlBarVisiblesupport on Android to align with iOS v1.4.0 — fixesMissingPluginExceptionthat broke short-drama playback.
1.5.1 #
- feat: add
setBarrageSettings({displayAreaRatio, opacity, fontSize, speedLevel})— batch configure danmaku display parameters in one call. - feat: add
setPiPEnabled(bool)— enable or disable PiP at runtime. - feat(ios): new
ILookPreloadManager/ILookPreloadTask— priority-based video preload system with configurable concurrency and disk cache limit. - feat(ios): expose preload API via Flutter plugin channel (
preloadVideos,cancelPreload,cancelPreloadExcept,configurePreload). - chore(ios): bump
ILOOK_PLAYER_VERSIONto1.0.330.
1.4.0 #
- feat: add
setControlBarVisible(bool)— show/hide the control bar (play/pause, progress, etc.). When hidden, tap gestures will not reveal controls. - feat(ios):
PlayerUIManagerrespectscontrolBarHiddenin bothshowControlsWithAutoHideandtoggleLandscapeControls. - feat(ios): add
methodSignatureForSelector/forwardInvocationguard inTestComponentto prevent crashes when a native method is missing after sync.sh.
1.3.3 #
- fix(ios/pip): align PiP lifecycle with original uni-app implementation to fix double-video on background.
- Remove manual
startPictureInPictureinsceneWillDeactivate(app still visible). applicationWillResignActiveonly setsisPiPStartPendingflag.applicationDidEnterBackgroundstarts AVPlayer PiP manually.- SampleBuffer PiP (VLC/FFmpeg) relies on system
canStartPictureInPictureAutomaticallyFromInline. - Add
isPiPStartPendingguard, pause protection, andfailedToStartfallback.
- Remove manual
1.3.2 #
- fix(ios/pip): disable
canStartPictureInPictureAutomaticallyFromInlinefor AVPlayer PiP to prevent double-video during app switch animation; SampleBuffer PiP still uses auto-start as required. - fix(ios/pip): add FFmpeg player path to
isBufferingandseekableTimeRangesPiP delegate callbacks. - fix(ios/pip): fix PiP
setPlayingdelegate to handle VLC, FFmpeg, and no-player cases independently. - chore(ios): comment out verbose
[BarrageSpeed]debug NSLogs in BarrageManager, BarrageRenderer, and BarrageScheduler.
1.3.1 #
- chore(ios): clarify
gravityRotationAllowednaming comment to explain why it differs from the exportedsetGravityRotationEnabled:method name.
1.3.0 #
- feat:
PlayerViewnow accepts amodeparameter (PlayerMode.normal/PlayerMode.shortDrama). In short drama mode, Flutter gesture recognizers are not registered so outerPageViewcan handle vertical swipes natively. - feat(ios): short drama mode disables double-tap and long-press gestures to prevent
UITapGestureRecognizer.delaysTouchesEndedfrom blocking Flutter'sVerticalDragGestureRecognizer. - fix(ios): gravity rotation no longer starts automatically on player init — must be explicitly enabled via
setGravityRotationEnabled(true). - fix(ios): reset motion manager orientation state on stop to prevent stale landscape/portrait state on next start.
1.2.1 #
- fix(ios): back button hidden state was being reset by internal UI refresh — add
portraitBackButtonHiddenproperty and respect user override acrossshowControlsand fullscreen transitions. - fix(android): align Android short drama mode with iOS —
setPlayerMode(SHORT_DRAMA)now hides back button by default; explicitsetPortraitBackButtonVisiblecalls take priority over mode defaults.
1.2.0 #
- feat: add
playerMode(normal / shortDrama) — short drama mode disables mid-video pan gestures. - feat: add
backButtonInsets— customize portrait back button position to avoid Dynamic Island. - feat: add
seekToSeconds— precise seek for both normal and short drama modes. - fix: sync adMode priority fix — ad mode now takes precedence over shortDrama, keeping pan gesture enabled during ads.
- feat(android): add
playerMode,backButtonInsets, andseekToSecondssupport on Android.
1.1.1 #
- Fix: restore gravity rotation detection —
startDeviceMotionUpdatesToQueuewas accidentally commented out, causing auto-rotation to stop working. - Fix: add
setGravityRotationEnabledandsetPortraitBackButtonVisiblebridge methods to iOS Flutter bridge.
1.0.1 #
- Add missing Android entry point:
PlayerPlugin.java,AndroidManifest.xml. - Add full Android Java sources: managers, views, models, utils, DanmakuFlameMaster library.
1.0.0 #
- Rename package from
nova_native_playertomohe_native_player. - Fix unused field, unused method, and unnecessary import warnings.
0.0.1 #
- Initial release.
- Native video player for iOS and Android.
- HLS/DASH streaming support.
- Full playback controls, danmaku, DLNA, PiP, fullscreen.