mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-09 04:24:53 +08:00
opt static thumbnail gif
Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
@@ -15,7 +15,6 @@ abstract final class Assets {
|
|||||||
static const trendingBanner = 'assets/images/trending_banner.png';
|
static const trendingBanner = 'assets/images/trending_banner.png';
|
||||||
static const ai = 'assets/images/ai.png';
|
static const ai = 'assets/images/ai.png';
|
||||||
|
|
||||||
// static const livingChart = 'assets/images/live.gif';
|
|
||||||
static const livingStatic = 'assets/images/live.png';
|
static const livingStatic = 'assets/images/live.png';
|
||||||
static const livingRect = 'assets/images/live/live.png';
|
static const livingRect = 'assets/images/live/live.png';
|
||||||
static const livingBackground = 'assets/images/live/default_bg.webp';
|
static const livingBackground = 'assets/images/live/default_bg.webp';
|
||||||
|
|||||||
@@ -66,13 +66,7 @@ class NetworkImgLayer extends StatelessWidget {
|
|||||||
memCacheHeight = height;
|
memCacheHeight = height;
|
||||||
}
|
}
|
||||||
return CachedNetworkImage(
|
return CachedNetworkImage(
|
||||||
imageUrl: ImageUtils.thumbnailUrl(
|
imageUrl: ImageUtils.thumbnailUrl(src, maxQuality: quality),
|
||||||
src,
|
|
||||||
maxQuality: quality,
|
|
||||||
suffix: src!.endsWith(ImageUtils.kSuffixGIF)
|
|
||||||
? ImageUtils.kSuffixJPG
|
|
||||||
: ImageUtils.kSuffixWEBP,
|
|
||||||
),
|
|
||||||
width: width,
|
width: width,
|
||||||
height: height,
|
height: height,
|
||||||
memCacheWidth: memCacheWidth,
|
memCacheWidth: memCacheWidth,
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import 'package:PiliPlus/common/widgets/gesture/image_horizontal_drag_gesture_re
|
|||||||
import 'package:PiliPlus/common/widgets/image_viewer/viewer.dart';
|
import 'package:PiliPlus/common/widgets/image_viewer/viewer.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/gestures.dart' show DoubleTapGestureRecognizer;
|
import 'package:flutter/gestures.dart' show DoubleTapGestureRecognizer;
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart' hide Image;
|
||||||
import 'package:flutter/scheduler.dart';
|
import 'package:flutter/scheduler.dart';
|
||||||
import 'package:flutter/semantics.dart';
|
import 'package:flutter/semantics.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -1693,6 +1693,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
|||||||
cacheHeight: 25,
|
cacheHeight: 25,
|
||||||
semanticLabel: "加载中",
|
semanticLabel: "加载中",
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
|
isPaused: false,
|
||||||
),
|
),
|
||||||
if (plPlayerController.isBuffering.value)
|
if (plPlayerController.isBuffering.value)
|
||||||
Obx(() {
|
Obx(() {
|
||||||
|
|||||||
@@ -1,13 +1,71 @@
|
|||||||
diff --git a/packages/flutter/lib/src/widgets/image.dart b/packages/flutter/lib/src/widgets/image.dart
|
diff --git a/packages/flutter/lib/src/widgets/image.dart b/packages/flutter/lib/src/widgets/image.dart
|
||||||
index 30429ea5e02..b58f4343440 100644
|
index 30429ea5e02..79f727ab472 100644
|
||||||
--- a/packages/flutter/lib/src/widgets/image.dart
|
--- a/packages/flutter/lib/src/widgets/image.dart
|
||||||
+++ b/packages/flutter/lib/src/widgets/image.dart
|
+++ b/packages/flutter/lib/src/widgets/image.dart
|
||||||
@@ -1148,7 +1148,7 @@ class _ImageState extends State<Image> with WidgetsBindingObserver {
|
@@ -381,6 +381,7 @@ class Image extends StatefulWidget {
|
||||||
|
this.gaplessPlayback = false,
|
||||||
|
this.isAntiAlias = false,
|
||||||
|
this.filterQuality = FilterQuality.medium,
|
||||||
|
+ this.isPaused = true,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Creates a widget that displays an [ImageStream] obtained from the network.
|
||||||
|
@@ -471,6 +472,7 @@ class Image extends StatefulWidget {
|
||||||
|
Map<String, String>? headers,
|
||||||
|
num? cacheWidth,
|
||||||
|
num? cacheHeight,
|
||||||
|
+ this.isPaused = true,
|
||||||
|
WebHtmlElementStrategy webHtmlElementStrategy = WebHtmlElementStrategy.never,
|
||||||
|
}) : image = ResizeImage.resizeIfNeeded(
|
||||||
|
cacheWidth,
|
||||||
|
@@ -540,6 +542,7 @@ class Image extends StatefulWidget {
|
||||||
|
this.filterQuality = FilterQuality.medium,
|
||||||
|
num? cacheWidth,
|
||||||
|
num? cacheHeight,
|
||||||
|
+ this.isPaused = true,
|
||||||
|
}) : // FileImage is not supported on Flutter Web therefore neither this method.
|
||||||
|
assert(
|
||||||
|
!kIsWeb,
|
||||||
|
@@ -703,6 +706,7 @@ class Image extends StatefulWidget {
|
||||||
|
this.filterQuality = FilterQuality.medium,
|
||||||
|
num? cacheWidth,
|
||||||
|
num? cacheHeight,
|
||||||
|
+ this.isPaused = true,
|
||||||
|
}) : image = ResizeImage.resizeIfNeeded(
|
||||||
|
cacheWidth,
|
||||||
|
cacheHeight,
|
||||||
|
@@ -765,6 +769,7 @@ class Image extends StatefulWidget {
|
||||||
|
this.filterQuality = FilterQuality.medium,
|
||||||
|
num? cacheWidth,
|
||||||
|
num? cacheHeight,
|
||||||
|
+ this.isPaused = true,
|
||||||
|
}) : image = ResizeImage.resizeIfNeeded(
|
||||||
|
cacheWidth,
|
||||||
|
cacheHeight,
|
||||||
|
@@ -1078,6 +1083,8 @@ class Image extends StatefulWidget {
|
||||||
|
/// Anti-aliasing alleviates the sawtooth artifact when the image is rotated.
|
||||||
|
final bool isAntiAlias;
|
||||||
|
|
||||||
|
+ final bool isPaused;
|
||||||
|
+
|
||||||
|
@override
|
||||||
|
State<Image> createState() => _ImageState();
|
||||||
|
|
||||||
|
@@ -1123,7 +1130,7 @@ class _ImageState extends State<Image> with WidgetsBindingObserver {
|
||||||
|
/// True when animations are disabled and the image should not update, such as
|
||||||
|
/// when [TickerMode] is disabled or [MediaQueryData.disableAnimations] is
|
||||||
|
/// true.
|
||||||
|
- bool _isPaused = false;
|
||||||
|
+ bool get _isPaused => widget.isPaused;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
@@ -1148,8 +1155,6 @@ class _ImageState extends State<Image> with WidgetsBindingObserver {
|
||||||
_updateInvertColors();
|
_updateInvertColors();
|
||||||
_resolveImage();
|
_resolveImage();
|
||||||
|
|
||||||
- _isPaused = !TickerMode.of(context) || (MediaQuery.maybeDisableAnimationsOf(context) ?? false);
|
- _isPaused = !TickerMode.of(context) || (MediaQuery.maybeDisableAnimationsOf(context) ?? false);
|
||||||
+ _isPaused = !TickerMode.of(context);
|
-
|
||||||
|
|
||||||
if (_isPaused && _frameNumber != null) {
|
if (_isPaused && _frameNumber != null) {
|
||||||
_stopListeningToStream(keepStreamAlive: true);
|
_stopListeningToStream(keepStreamAlive: true);
|
||||||
|
} else {
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ abstract final class ImageUtils {
|
|||||||
caseSensitive: false,
|
caseSensitive: false,
|
||||||
);
|
);
|
||||||
|
|
||||||
static const kSuffixJPG = '.jpg';
|
// static const kSuffixJPG = '.jpg';
|
||||||
static const kSuffixGIF = '.gif';
|
static const kSuffixGIF = '.gif';
|
||||||
static const kSuffixWEBP = '.webp';
|
static const kSuffixWEBP = '.webp';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user