kenji_player 1.1.2
kenji_player: ^1.1.2 copied to clipboard
Kenji Video Player is a video player for flutter. The video_player plugin gives low level access for the video playback.
Changelog #
1.1.0 - 2026-03-03 #
Fixed #
- Memory leak — Fixed an issue where the old
VideoPlayerControllerposition listener was not removed when switching sources. Added_lastVideoControllertracking mechanism. - Fullscreen landscape layout — Fixed incorrect
AspectRatiousage when entering fullscreen due toOrientationBuilderdelay. Replaced withisFullScreen || isLandscapelogic. VideoCoreAspectRadiocrash — Fixed crash caused by force unwrapping (!) whenvideowas null or not initialized. Added null-safe checks.KenjiPlayersilent init failure — Wheninitialize()failed, the UI remained stuck in loading state. Added try/catch and introduced an error widget with retry button.- Duration formatter bug —
1:30:00was incorrectly displayed as1:90:00. Addedremainder(60)toinMinutes/inSeconds. VideoCoreAspectRadiorebuild —listen: falseprevented rebuild whenisFullScreenchanged. Updated tolisten: true.QualityMenuduplicate condition — Removed duplicatedif (entry.key != activeSourceName)condition.SpeedMenunull crash — Madevideo!.value.playbackSpeednull-safe using?..OverlayBottomdead code — Removed unused_showRemaingTextValueNotifierand converted toStatelessWidget.VideoCoreActiveSubtitleTextduplicate query — Removed duplicatelisten: truecall and kept a single listener.CenterPlayAndPausemisleading naming — ChangedisPlaying = !controller.isPlaying→playing = controller.isPlayingfor clarity.- Controller ownership —
KenjiPlayerpreviously disposed externally providedKenjiPlayerController. Added_ownsControllerflag to ensure only internally created controllers are disposed.
Added #
- Error state UI — Displays an error message with a "Retry" button when video loading fails. Added
VideoErrorStateandretryCurrentSource(). - Adaptive bitrate — Automatically switches to lower quality when buffer drops below 10 seconds. Added
bufferHealthRatiogetter. - Pinch to zoom — Added
ScaleGestureDetectorto support zooming between 1.0×–3.0×. - Fullscreen orientation lock — Locks to
landscapeLeft + landscapeRightautomatically when entering fullscreen. - Fullscreen system UI — Hides status bar and navigation bar using
SystemUiMode.immersiveStickyin fullscreen. RestoresedgeToEdgemode on exit. - Battery
ValueNotifier— Previously calledsetStateevery 5 seconds causing full widget rebuild. Now usesValueNotifierso only the battery widget rebuilds.
Changed #
SecondaryMenu— Replacedforloop with...childrenspread operator.VideoProgressBar— FixedNaNissue whenend.inMilliseconds == 0. Added.clamp(0.0, 1.0).ProgressBarwidth — Prevented negative width values using.clamp(0.0, double.infinity).Dot.opacity— Changed from nullabledouble?to non-nullabledouble._TextPositionPainter— Replacedui.TextStyle + ParagraphBuilderwithTextPainter. Tooltip position is now based on progress dot position and properly clamped.
1.0.6 - 2026-01-13 #
Fixed #
- Added subtitle decrypt support (AES-128-CBC) for encrypted VTT files.
- Supported base64-wrapped CDN subtitle files.
- Improved subtitle parsing and stability when loading encrypted subtitles.
1.0.5 2025-12-xx #
Fixed #
- Resolved
seekTorelated errors. - Improved player UI and control icons for better user experience.