add download btns

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-06-14 16:46:47 +08:00
parent 1b3f27aa31
commit 80d9a426a7
5 changed files with 65 additions and 43 deletions

Binary file not shown.

View File

@@ -11,36 +11,37 @@ abstract final class CustomIcons {
static const IconData dm_off = IconData(0xe802, fontFamily: _kFontFam);
static const IconData dm_on = IconData(0xe803, fontFamily: _kFontFam);
static const IconData dm_settings = IconData(0xe804, fontFamily: _kFontFam);
static const IconData dyn = IconData(0xe805, fontFamily: _kFontFam);
static const IconData fav = IconData(0xe806, fontFamily: _kFontFam);
static const IconData flip_rotate_90 = IconData(0xe807, fontFamily: _kFontFam);
static const IconData identifier_circle = IconData(0xe808, fontFamily: _kFontFam);
static const IconData live_reserve = IconData(0xe809, fontFamily: _kFontFam);
static const IconData open_in_full_rotate_45 = IconData(0xe80a, fontFamily: _kFontFam);
static const IconData player_dm_tip_back = IconData(0xe80b, fontFamily: _kFontFam);
static const IconData player_dm_tip_copy = IconData(0xe80c, fontFamily: _kFontFam);
static const IconData player_dm_tip_like = IconData(0xe80d, fontFamily: _kFontFam);
static const IconData player_dm_tip_like_solid = IconData(0xe80e, fontFamily: _kFontFam);
static const IconData player_dm_tip_recall = IconData(0xe80f, fontFamily: _kFontFam);
static const IconData repeat_rounded_rotate_90 = IconData(0xe810, fontFamily: _kFontFam);
static const IconData share = IconData(0xe811, fontFamily: _kFontFam);
static const IconData share_line = IconData(0xe812, fontFamily: _kFontFam);
static const IconData share_node = IconData(0xe813, fontFamily: _kFontFam);
static const IconData shield_play_arrow = IconData(0xe814, fontFamily: _kFontFam);
static const IconData shield_published = IconData(0xe815, fontFamily: _kFontFam);
static const IconData shield_reply = IconData(0xe816, fontFamily: _kFontFam);
static const IconData shopping_bag_not_interested = IconData(0xe817, fontFamily: _kFontFam);
static const IconData splitscreen_rotate_90 = IconData(0xe818, fontFamily: _kFontFam);
static const IconData star_favorite_line = IconData(0xe819, fontFamily: _kFontFam);
static const IconData star_favorite_solid = IconData(0xe81a, fontFamily: _kFontFam);
static const IconData thumbs_down = IconData(0xe81b, fontFamily: _kFontFam);
static const IconData thumbs_down_outline = IconData(0xe81c, fontFamily: _kFontFam);
static const IconData thumbs_up = IconData(0xe81d, fontFamily: _kFontFam);
static const IconData thumbs_up_fill = IconData(0xe81e, fontFamily: _kFontFam);
static const IconData thumbs_up_line = IconData(0xe81f, fontFamily: _kFontFam);
static const IconData thumbs_up_outline = IconData(0xe820, fontFamily: _kFontFam);
static const IconData topic_tag = IconData(0xe821, fontFamily: _kFontFam);
static const IconData touch_app_rotate_270 = IconData(0xe822, fontFamily: _kFontFam);
static const IconData view_headline_rotate_90 = IconData(0xe823, fontFamily: _kFontFam);
static const IconData watch_later = IconData(0xe824, fontFamily: _kFontFam);
static const IconData download = IconData(0xe805, fontFamily: _kFontFam);
static const IconData dyn = IconData(0xe806, fontFamily: _kFontFam);
static const IconData fav = IconData(0xe807, fontFamily: _kFontFam);
static const IconData flip_rotate_90 = IconData(0xe808, fontFamily: _kFontFam);
static const IconData identifier_circle = IconData(0xe809, fontFamily: _kFontFam);
static const IconData live_reserve = IconData(0xe80a, fontFamily: _kFontFam);
static const IconData open_in_full_rotate_45 = IconData(0xe80b, fontFamily: _kFontFam);
static const IconData player_dm_tip_back = IconData(0xe80c, fontFamily: _kFontFam);
static const IconData player_dm_tip_copy = IconData(0xe80d, fontFamily: _kFontFam);
static const IconData player_dm_tip_like = IconData(0xe80e, fontFamily: _kFontFam);
static const IconData player_dm_tip_like_solid = IconData(0xe80f, fontFamily: _kFontFam);
static const IconData player_dm_tip_recall = IconData(0xe810, fontFamily: _kFontFam);
static const IconData repeat_rounded_rotate_90 = IconData(0xe811, fontFamily: _kFontFam);
static const IconData share = IconData(0xe812, fontFamily: _kFontFam);
static const IconData share_line = IconData(0xe813, fontFamily: _kFontFam);
static const IconData share_node = IconData(0xe814, fontFamily: _kFontFam);
static const IconData shield_play_arrow = IconData(0xe815, fontFamily: _kFontFam);
static const IconData shield_published = IconData(0xe816, fontFamily: _kFontFam);
static const IconData shield_reply = IconData(0xe817, fontFamily: _kFontFam);
static const IconData shopping_bag_not_interested = IconData(0xe818, fontFamily: _kFontFam);
static const IconData splitscreen_rotate_90 = IconData(0xe819, fontFamily: _kFontFam);
static const IconData star_favorite_line = IconData(0xe81a, fontFamily: _kFontFam);
static const IconData star_favorite_solid = IconData(0xe81b, fontFamily: _kFontFam);
static const IconData thumbs_down = IconData(0xe81c, fontFamily: _kFontFam);
static const IconData thumbs_down_outline = IconData(0xe81d, fontFamily: _kFontFam);
static const IconData thumbs_up = IconData(0xe81e, fontFamily: _kFontFam);
static const IconData thumbs_up_fill = IconData(0xe81f, fontFamily: _kFontFam);
static const IconData thumbs_up_line = IconData(0xe820, fontFamily: _kFontFam);
static const IconData thumbs_up_outline = IconData(0xe821, fontFamily: _kFontFam);
static const IconData topic_tag = IconData(0xe822, fontFamily: _kFontFam);
static const IconData touch_app_rotate_270 = IconData(0xe823, fontFamily: _kFontFam);
static const IconData view_headline_rotate_90 = IconData(0xe824, fontFamily: _kFontFam);
static const IconData watch_later = IconData(0xe825, fontFamily: _kFontFam);
}

View File

@@ -3,6 +3,7 @@ import 'dart:math';
import 'package:PiliPlus/common/style.dart';
import 'package:PiliPlus/common/widgets/badge.dart';
import 'package:PiliPlus/common/widgets/button/icon_button.dart';
import 'package:PiliPlus/common/widgets/custom_icon.dart';
import 'package:PiliPlus/common/widgets/dialog/dialog.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/common/widgets/image_viewer/hero.dart';
@@ -426,6 +427,11 @@ class _PgcIntroPageState extends State<PgcIntroPage> {
text: NumUtils.numFormat(item.stat!.favorite),
),
),
ActionItem(
icon: const Icon(CustomIcons.download),
onTap: () => videoDetailCtr.onDownload(context),
text: '缓存',
),
Obx(
() => ActionItem(
icon: const Icon(FontAwesomeIcons.clock),

View File

@@ -1,5 +1,6 @@
import 'package:PiliPlus/common/constants.dart';
import 'package:PiliPlus/common/style.dart';
import 'package:PiliPlus/common/widgets/custom_icon.dart';
import 'package:PiliPlus/common/widgets/dialog/dialog.dart';
import 'package:PiliPlus/common/widgets/gesture/tap_gesture_recognizer.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
@@ -524,17 +525,17 @@ class _UgcIntroPanelState extends State<UgcIntroPanel> {
onCancelTriple: introController.onCancelTriple,
),
),
Obx(
() => ActionItem(
icon: const Icon(FontAwesomeIcons.thumbsDown),
selectIcon: const Icon(FontAwesomeIcons.solidThumbsDown),
onTap: () => introController.handleAction(
introController.actionDislikeVideo,
),
selectStatus: introController.hasDislike.value,
text: "点踩",
),
),
// Obx(
// () => ActionItem(
// icon: const Icon(FontAwesomeIcons.thumbsDown),
// selectIcon: const Icon(FontAwesomeIcons.solidThumbsDown),
// onTap: () => introController.handleAction(
// introController.actionDislikeVideo,
// ),
// selectStatus: introController.hasDislike.value,
// text: "点踩",
// ),
// ),
Obx(
() => ActionItem(
animation: introController.tripleAnimation,
@@ -563,6 +564,11 @@ class _UgcIntroPanelState extends State<UgcIntroPanel> {
: null,
),
),
ActionItem(
icon: const Icon(CustomIcons.download),
onTap: () => videoDetailCtr.onDownload(context),
text: '缓存',
),
Obx(
() => ActionItem(
icon: const Icon(FontAwesomeIcons.clock),

View File

@@ -1830,6 +1830,15 @@ class HeaderControlState extends State<HeaderControl>
),
),
),
SizedBox(
width: btnWidth,
height: btnHeight,
child: ActionItem(
expand: false,
icon: const Icon(CustomIcons.download, color: Colors.white),
onTap: () => videoDetailCtr.onDownload(context),
),
),
SizedBox(
width: btnWidth,
height: btnHeight,