mohe_native_player 1.8.1 copy "mohe_native_player: ^1.8.1" to clipboard
mohe_native_player: ^1.8.1 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.1 #

  • fix(android): PlayerPlatformView.dispose now calls restoreFromPiP to prevent PiP window leak on view destroy.
  • fix(android): immersive short drama mode — fix top status bar black strip on OnePlus / ColorOS devices.
  • fix(android): landscape pause ad → portrait transition — hideAllSelectors no longer calls removeAllViews, preventing layout disappear.
  • fix(android): prevent MPEG4Writer FORTIFY abort — add Annex-B structure validation before writing.
  • fix(android): fix DFEncryptedPlayer resource leak — shutdown now enforces main-thread dispatch.

1.8.0 #

  • feat: add PlayerController.setFitMode(PlayerFitMode) — switch fill mode at runtime without rebuilding the widget.
  • feat(ios): fire videosizechange event with {width, height} on video ready and VLC video size change.
  • feat(ios): ad mode now allows videosizechange event through (previously blocked).
  • fix(android): danmaku settings panel — SeekBar thumb clipped on landscape; add padding equal to thumb radius and disable clipChildren on parent containers; add WindowInsets listener for display cutout / waterfall right safe-inset.
  • chore(ios): bump ILOOK_PLAYER_VERSION to 1.0.359.

1.7.0 #

  • feat: add PlayerFitMode enum (contain / cover) and PlayerView.fitMode parameter — passed via creationParams to native layer; cover = fill screen (short drama), contain = letterbox (default).
  • feat(ios): sync native core to v1.0.348 — isHostFlutter flag blocks shortDrama auto-fullscreen black screen; setupViewWithFrame:attributes: dispatches creationParams fit-mode to setFitMode:.
  • feat(ios): FullscreenManager enhancements for Flutter hosting — suppresses auto-rotate on isHostFlutter, correct safe-area handling in FullscreenPlayerViewController.
  • feat(android): setPlayerMode(shortDrama) enters immersive fullscreen (hides status/nav bar, adds KEEP_SCREEN_ON); ShortDramaImmersiveCoordinator uses activity-level ref counting so multiple PlayerView instances cooperate.
  • feat(android): creationParams fit-mode mapped to CENTER_CROP (cover) or FIT_CENTER (contain) on TextureView.

1.6.0 #

  • feat: add PlayerPreload / PreloadRequest Dart API — priority-based video preload with preload, 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): PlayerPlugin adds plugin-level globalChannel for shutdownAllPlayers, preloadVideos, cancelPreload, cancelPreloadExcept, configurePreload.
  • feat(android): DFEncryptedPlayer add full lifecycle — setDataSource, prepare, start, pause, stop, seekTo, getState, getDuration, getCurrentPosition.
  • fix(android): FFDecryptMuxer stability 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: playWithAds adds optional landingUrl parameter for "了解详情" ad tap-through.
  • feat: expose shutdownAllPlayers via global Flutter channel for batch player cleanup.
  • fix(android): add setControlBarVisible support on Android to align with iOS v1.4.0 — fixes MissingPluginException that 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_VERSION to 1.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): PlayerUIManager respects controlBarHidden in both showControlsWithAutoHide and toggleLandscapeControls.
  • feat(ios): add methodSignatureForSelector / forwardInvocation guard in TestComponent to 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 startPictureInPicture in sceneWillDeactivate (app still visible).
    • applicationWillResignActive only sets isPiPStartPending flag.
    • applicationDidEnterBackground starts AVPlayer PiP manually.
    • SampleBuffer PiP (VLC/FFmpeg) relies on system canStartPictureInPictureAutomaticallyFromInline.
    • Add isPiPStartPending guard, pause protection, and failedToStart fallback.

1.3.2 #

  • fix(ios/pip): disable canStartPictureInPictureAutomaticallyFromInline for 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 isBuffering and seekableTimeRanges PiP delegate callbacks.
  • fix(ios/pip): fix PiP setPlaying delegate 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 gravityRotationAllowed naming comment to explain why it differs from the exported setGravityRotationEnabled: method name.

1.3.0 #

  • feat: PlayerView now accepts a mode parameter (PlayerMode.normal / PlayerMode.shortDrama). In short drama mode, Flutter gesture recognizers are not registered so outer PageView can handle vertical swipes natively.
  • feat(ios): short drama mode disables double-tap and long-press gestures to prevent UITapGestureRecognizer.delaysTouchesEnded from blocking Flutter's VerticalDragGestureRecognizer.
  • 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 portraitBackButtonHidden property and respect user override across showControls and fullscreen transitions.
  • fix(android): align Android short drama mode with iOS — setPlayerMode(SHORT_DRAMA) now hides back button by default; explicit setPortraitBackButtonVisible calls 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, and seekToSeconds support on Android.

1.1.1 #

  • Fix: restore gravity rotation detection — startDeviceMotionUpdatesToQueue was accidentally commented out, causing auto-rotation to stop working.
  • Fix: add setGravityRotationEnabled and setPortraitBackButtonVisible bridge 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_player to mohe_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.
2
likes
0
points
1.4k
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter native video player plugin for iOS and Android with full-featured controls, HLS/DASH support, danmaku, DLNA casting, PiP, and more.

License

unknown (license)

Dependencies

flutter, screen_brightness, volume_controller

More

Packages that depend on mohe_native_player

Packages that implement mohe_native_player