Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
dom
2025-09-12 18:12:21 +08:00
committed by GitHub
parent da17725616
commit d6bff33d29
130 changed files with 1036 additions and 834 deletions

View File

@@ -19,7 +19,6 @@ class ColorPalette extends StatelessWidget {
final primary = Color(Hct.from(hct.hue, 20.0, 90.0).toInt());
final tertiary = Color(Hct.from(hct.hue + 50, 20.0, 85.0).toInt());
final primaryContainer = Color(Hct.from(hct.hue, 30.0, 50.0).toInt());
final checkbox = Color(Hct.from(hct.hue, 30.0, 40.0).toInt());
Widget coloredBox(Color color) => Expanded(
child: ColoredBox(
color: color,
@@ -51,7 +50,7 @@ class ColorPalette extends StatelessWidget {
width: 23,
height: 23,
decoration: BoxDecoration(
color: checkbox,
color: Color(Hct.from(hct.hue, 30.0, 40.0).toInt()),
shape: BoxShape.circle,
),
child: Icon(

View File

@@ -2,7 +2,7 @@ import 'package:PiliPlus/common/constants.dart';
import 'package:PiliPlus/common/widgets/button/icon_button.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/http/user.dart';
import 'package:PiliPlus/utils/image_util.dart';
import 'package:PiliPlus/utils/image_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
@@ -111,14 +111,14 @@ void imageSaveDialog({
tooltip: '分享',
onPressed: () {
SmartDialog.dismiss();
ImageUtil.onShareImg(cover!);
ImageUtils.onShareImg(cover!);
},
icon: Icons.share,
),
iconBtn(
tooltip: '保存封面图',
onPressed: () async {
bool saveStatus = await ImageUtil.downloadImg(
bool saveStatus = await ImageUtils.downloadImg(
context,
[cover!],
);

View File

@@ -1,7 +1,7 @@
import 'package:PiliPlus/common/constants.dart';
import 'package:PiliPlus/models/common/image_type.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/image_util.dart';
import 'package:PiliPlus/utils/image_utils.dart';
import 'package:PiliPlus/utils/storage_pref.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
@@ -83,7 +83,7 @@ class NetworkImgLayer extends StatelessWidget {
memCacheHeight = height.cacheSize(context);
}
return CachedNetworkImage(
imageUrl: ImageUtil.thumbnailUrl(src, quality),
imageUrl: ImageUtils.thumbnailUrl(src, quality),
width: width,
height: height,
memCacheWidth: memCacheWidth,

View File

@@ -5,7 +5,8 @@ import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactive_vi
import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactive_viewer_boundary.dart';
import 'package:PiliPlus/models/common/image_preview_type.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/image_util.dart';
import 'package:PiliPlus/utils/image_utils.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/storage_pref.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:cached_network_image/cached_network_image.dart';
@@ -224,7 +225,7 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
String _getActualUrl(String url) {
return _quality != 100
? ImageUtil.thumbnailUrl(url, _quality)
? ImageUtils.thumbnailUrl(url, _quality)
: url.http2https;
}
@@ -351,7 +352,7 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
final item = widget.sources[currentIndex.value];
return [
PopupMenuItem(
onTap: () => ImageUtil.onShareImg(item.url),
onTap: () => ImageUtils.onShareImg(item.url),
child: const Text("分享图片"),
),
PopupMenuItem(
@@ -359,15 +360,20 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
child: const Text("复制链接"),
),
PopupMenuItem(
onTap: () => ImageUtil.downloadImg(
onTap: () => ImageUtils.downloadImg(
this.context,
[item.url],
),
child: const Text("保存图片"),
),
if (widget.sources.length > 1)
if (Utils.isDesktop)
PopupMenuItem(
onTap: () => ImageUtil.downloadImg(
onTap: () => PageUtils.launchURL(item.url),
child: const Text("网页打开"),
)
else if (widget.sources.length > 1)
PopupMenuItem(
onTap: () => ImageUtils.downloadImg(
this.context,
widget.sources.map((item) => item.url).toList(),
),
@@ -376,7 +382,7 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
if (item.sourceType == SourceType.livePhoto)
PopupMenuItem(
onTap: () {
ImageUtil.downloadLivePhoto(
ImageUtils.downloadLivePhoto(
context: this.context,
url: item.url,
liveUrl: item.liveUrl!,
@@ -417,7 +423,7 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
return CachedNetworkImage(
fadeInDuration: Duration.zero,
fadeOutDuration: Duration.zero,
imageUrl: ImageUtil.thumbnailUrl(item.url, widget.quality),
imageUrl: ImageUtils.thumbnailUrl(item.url, widget.quality),
);
},
),
@@ -497,7 +503,7 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
ListTile(
onTap: () {
Get.back();
ImageUtil.onShareImg(item.url);
ImageUtils.onShareImg(item.url);
},
dense: true,
title: const Text('分享', style: TextStyle(fontSize: 14)),
@@ -513,7 +519,7 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
ListTile(
onTap: () {
Get.back();
ImageUtil.downloadImg(
ImageUtils.downloadImg(
this.context,
[item.url],
);
@@ -521,11 +527,20 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
dense: true,
title: const Text('保存图片', style: TextStyle(fontSize: 14)),
),
if (widget.sources.length > 1)
if (Utils.isDesktop)
ListTile(
onTap: () {
Get.back();
ImageUtil.downloadImg(
PageUtils.launchURL(item.url);
},
dense: true,
title: const Text('网页打开', style: TextStyle(fontSize: 14)),
)
else if (widget.sources.length > 1)
ListTile(
onTap: () {
Get.back();
ImageUtils.downloadImg(
this.context,
widget.sources.map((item) => item.url).toList(),
);
@@ -537,7 +552,7 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
ListTile(
onTap: () {
Get.back();
ImageUtil.downloadLivePhoto(
ImageUtils.downloadLivePhoto(
context: this.context,
url: item.url,
liveUrl: item.liveUrl!,

View File

@@ -2,7 +2,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/common/avatar_badge_type.dart';
import 'package:PiliPlus/models/common/image_type.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/image_util.dart';
import 'package:PiliPlus/utils/image_utils.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/storage_pref.dart';
import 'package:cached_network_image/cached_network_image.dart';
@@ -64,7 +64,7 @@ class PendantAvatar extends StatelessWidget {
child: CachedNetworkImage(
width: size * 1.75,
height: size * 1.75,
imageUrl: ImageUtil.thumbnailUrl(garbPendantImage),
imageUrl: ImageUtils.thumbnailUrl(garbPendantImage),
),
),
),

View File

@@ -1,5 +1,5 @@
import 'package:PiliPlus/models/common/stat_type.dart';
import 'package:PiliPlus/utils/num_util.dart';
import 'package:PiliPlus/utils/num_utils.dart';
import 'package:flutter/material.dart';
class StatWidget extends StatelessWidget {
@@ -32,7 +32,7 @@ class StatWidget extends StatelessWidget {
color: color,
),
Text(
NumUtil.numFormat(value),
NumUtils.numFormat(value),
style: TextStyle(fontSize: 12, color: color),
),
],

View File

@@ -11,8 +11,8 @@ import 'package:PiliPlus/models/common/stat_type.dart';
import 'package:PiliPlus/models/model_hot_video_item.dart';
import 'package:PiliPlus/models/model_video.dart';
import 'package:PiliPlus/models/search/result.dart';
import 'package:PiliPlus/utils/date_util.dart';
import 'package:PiliPlus/utils/duration_util.dart';
import 'package:PiliPlus/utils/date_utils.dart';
import 'package:PiliPlus/utils/duration_utils.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@@ -158,7 +158,7 @@ class VideoCardH extends StatelessWidget {
PBadge(
text: progress == -1
? '已看完'
: '${DurationUtil.formatDuration(progress)}/${DurationUtil.formatDuration(videoItem.duration)}',
: '${DurationUtils.formatDuration(progress)}/${DurationUtils.formatDuration(videoItem.duration)}',
right: 6,
bottom: 8,
type: PBadgeType.gray,
@@ -175,7 +175,7 @@ class VideoCardH extends StatelessWidget {
),
] else if (videoItem.duration > 0)
PBadge(
text: DurationUtil.formatDuration(
text: DurationUtils.formatDuration(
videoItem.duration,
),
right: 6.0,
@@ -210,7 +210,7 @@ class VideoCardH extends StatelessWidget {
Widget content(BuildContext context) {
final theme = Theme.of(context);
String pubdate = DateUtil.dateFormat(videoItem.pubdate!);
String pubdate = DateFormatUtils.dateFormat(videoItem.pubdate!);
if (pubdate != '') pubdate += ' ';
return Expanded(
child: Column(

View File

@@ -9,8 +9,8 @@ import 'package:PiliPlus/models/common/badge_type.dart';
import 'package:PiliPlus/models/common/stat_type.dart';
import 'package:PiliPlus/models/model_rec_video_item.dart';
import 'package:PiliPlus/utils/app_scheme.dart';
import 'package:PiliPlus/utils/date_util.dart';
import 'package:PiliPlus/utils/duration_util.dart';
import 'package:PiliPlus/utils/date_utils.dart';
import 'package:PiliPlus/utils/duration_utils.dart';
import 'package:PiliPlus/utils/id_utils.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/utils.dart';
@@ -103,7 +103,7 @@ class VideoCardV extends StatelessWidget {
right: 7,
size: PBadgeSize.small,
type: PBadgeType.gray,
text: DurationUtil.formatDuration(
text: DurationUtils.formatDuration(
videoItem.duration,
),
),
@@ -233,7 +233,7 @@ class VideoCardV extends StatelessWidget {
fontSize: theme.textTheme.labelSmall!.fontSize,
color: theme.colorScheme.outline.withValues(alpha: 0.8),
),
text: DateUtil.dateFormat(
text: DateFormatUtils.dateFormat(
videoItem.pubdate,
short: shortFormat,
long: longFormat,