fix: remove preview image overlay from video player and restore clean black background (v3.6.5)
Build and Release / Build Windows x64 (push) Has been cancelled
Build and Release / Build macOS (push) Has been cancelled

This commit is contained in:
2026-09-05 18:56:49 +03:00
parent 8ad36e2f6b
commit 54b77726cb
5 changed files with 27 additions and 35 deletions
+8
View File
@@ -1,4 +1,12 @@
const prismaChangelog = [ const prismaChangelog = [
PrismaChange(
version: '3.6.5',
title: 'Исправление наложения превью на видеоплеер',
bullets: [
'Устранение наложения превью-картинки на воспроизводимое видео: убран фоновый слой постера под видеоплеером и восстановлен классический черный бэкграунд для правильного отображения границ и леттербоксинга видео любого формата.',
'Чистый рендеринг видео в карточках ленты: предпросмотр видео в ленте также изолирован от просвечивания подложки.',
],
),
PrismaChange( PrismaChange(
version: '3.6.4', version: '3.6.4',
title: 'Полное исправление воспроизведения видео на ПК (устранение синего экрана)', title: 'Полное исправление воспроизведения видео на ПК (устранение синего экрана)',
@@ -230,9 +230,6 @@ class _PostMediaViewerState extends State<PostMediaViewer>
aspectRatio: widget.post.width > 0 && widget.post.height > 0 aspectRatio: widget.post.width > 0 && widget.post.height > 0
? widget.post.width / widget.post.height ? widget.post.width / widget.post.height
: 16 / 9, : 16 / 9,
previewUrl: widget.post.previewUrl.isNotEmpty
? widget.post.previewUrl
: widget.post.sampleUrl,
isSoftwareDecoding: _useSoftwareDecoding, isSoftwareDecoding: _useSoftwareDecoding,
onToggleDecoder: _toggleDecoderMode, onToggleDecoder: _toggleDecoderMode,
controlsVisible: _controlsVisible, controlsVisible: _controlsVisible,
@@ -720,9 +717,6 @@ class _PostMediaViewerState extends State<PostMediaViewer>
halfVolume: _halfVolume, halfVolume: _halfVolume,
coverVideo: _coverVideo, coverVideo: _coverVideo,
initialVolume: _currentVolume, initialVolume: _currentVolume,
previewUrl: widget.post.previewUrl.isNotEmpty
? widget.post.previewUrl
: widget.post.sampleUrl,
isSoftwareDecoding: _useSoftwareDecoding, isSoftwareDecoding: _useSoftwareDecoding,
onToggleDecoder: _toggleDecoderMode, onToggleDecoder: _toggleDecoderMode,
errorMessage: _videoError, errorMessage: _videoError,
@@ -921,7 +915,6 @@ class _FullscreenVideoPage extends StatefulWidget {
required this.halfVolume, required this.halfVolume,
required this.coverVideo, required this.coverVideo,
this.initialVolume = 100.0, this.initialVolume = 100.0,
this.previewUrl,
required this.isSoftwareDecoding, required this.isSoftwareDecoding,
required this.onToggleDecoder, required this.onToggleDecoder,
required this.errorMessage, required this.errorMessage,
@@ -938,7 +931,6 @@ class _FullscreenVideoPage extends StatefulWidget {
final bool halfVolume; final bool halfVolume;
final bool coverVideo; final bool coverVideo;
final double initialVolume; final double initialVolume;
final String? previewUrl;
final bool isSoftwareDecoding; final bool isSoftwareDecoding;
final VoidCallback onToggleDecoder; final VoidCallback onToggleDecoder;
final String? errorMessage; final String? errorMessage;
@@ -1065,7 +1057,6 @@ class _FullscreenVideoPageState extends State<_FullscreenVideoPage> {
player: widget.player, player: widget.player,
controller: widget.controller, controller: widget.controller,
aspectRatio: widget.aspectRatio, aspectRatio: widget.aspectRatio,
previewUrl: widget.previewUrl,
isSoftwareDecoding: widget.isSoftwareDecoding, isSoftwareDecoding: widget.isSoftwareDecoding,
onToggleDecoder: widget.onToggleDecoder, onToggleDecoder: widget.onToggleDecoder,
controlsVisible: _controlsVisible, controlsVisible: _controlsVisible,
@@ -1619,7 +1610,6 @@ class _VideoSurface extends StatefulWidget {
required this.player, required this.player,
required this.controller, required this.controller,
required this.aspectRatio, required this.aspectRatio,
this.previewUrl,
required this.isSoftwareDecoding, required this.isSoftwareDecoding,
required this.onToggleDecoder, required this.onToggleDecoder,
required this.controlsVisible, required this.controlsVisible,
@@ -1646,7 +1636,6 @@ class _VideoSurface extends StatefulWidget {
final Player player; final Player player;
final VideoController controller; final VideoController controller;
final double aspectRatio; final double aspectRatio;
final String? previewUrl;
final bool isSoftwareDecoding; final bool isSoftwareDecoding;
final VoidCallback onToggleDecoder; final VoidCallback onToggleDecoder;
final bool controlsVisible; final bool controlsVisible;
@@ -1807,22 +1796,15 @@ class _VideoSurfaceState extends State<_VideoSurface> {
return Stack( return Stack(
fit: StackFit.expand, fit: StackFit.expand,
children: [ children: [
if (widget.previewUrl != null && widget.previewUrl!.isNotEmpty) ColoredBox(
Positioned.fill( color: Colors.black,
child: CachedNetworkImage( child: Video(
imageUrl: widget.previewUrl!, controller: widget.controller,
fit: widget.coverVideo ? BoxFit.cover : BoxFit.contain, fit: widget.coverVideo ? BoxFit.cover : BoxFit.contain,
memCacheWidth: 1920, controls: null,
memCacheHeight: 1080, pauseUponEnteringBackgroundMode: false,
), resumeUponEnteringForegroundMode: false,
), ),
Video(
controller: widget.controller,
fit: widget.coverVideo ? BoxFit.cover : BoxFit.contain,
fill: Colors.transparent,
controls: null,
pauseUponEnteringBackgroundMode: false,
resumeUponEnteringForegroundMode: false,
), ),
if (_currentBrightness < 0.99) if (_currentBrightness < 0.99)
Positioned.fill( Positioned.fill(
+1 -1
View File
@@ -580,7 +580,7 @@ class _DesktopShellState extends State<_DesktopShell>
), ),
), ),
child: Text( child: Text(
'v3.6.4', 'v3.6.5',
style: TextStyle( style: TextStyle(
fontSize: 10, fontSize: 10,
fontWeight: fontWeight:
+9 -7
View File
@@ -642,13 +642,15 @@ class _FeedVideoPreviewState extends State<_FeedVideoPreview> {
AnimatedOpacity( AnimatedOpacity(
opacity: _ready ? 1 : 0, opacity: _ready ? 1 : 0,
duration: AppMotion.duration(context, 180), duration: AppMotion.duration(context, 180),
child: Video( child: ColoredBox(
controller: _controller, color: Colors.black,
fit: BoxFit.cover, child: Video(
fill: Colors.transparent, controller: _controller,
controls: null, fit: BoxFit.cover,
pauseUponEnteringBackgroundMode: false, controls: null,
resumeUponEnteringForegroundMode: false, pauseUponEnteringBackgroundMode: false,
resumeUponEnteringForegroundMode: false,
),
), ),
), ),
], ],
+1 -1
View File
@@ -1,7 +1,7 @@
name: gel_rule_app name: gel_rule_app
description: Local backend/core layer for a Flutter booru browser app. description: Local backend/core layer for a Flutter booru browser app.
publish_to: "none" publish_to: "none"
version: 3.6.4+86 version: 3.6.5+87
environment: environment:
sdk: ">=3.3.0 <4.0.0" sdk: ">=3.3.0 <4.0.0"