opt gesture

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-10-07 13:52:06 +08:00
parent 2bfa1bb6c2
commit 904756b6ea
38 changed files with 449 additions and 304 deletions

View File

@@ -4,6 +4,7 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/search/result.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart';
// 视频卡片 - 垂直布局
@@ -17,14 +18,16 @@ class PgcCardVSearch extends StatelessWidget {
@override
Widget build(BuildContext context) {
void onLongPress() => imageSaveDialog(
title: item.title.map((e) => e.text).join(),
cover: item.cover,
);
return Card(
shape: const RoundedRectangleBorder(borderRadius: StyleString.mdRadius),
child: InkWell(
borderRadius: StyleString.mdRadius,
onLongPress: () => imageSaveDialog(
title: item.title.map((e) => e.text).join(),
cover: item.cover,
),
onLongPress: onLongPress,
onSecondaryTap: Utils.isMobile ? null : onLongPress,
onTap: () => PageUtils.viewPgc(seasonId: item.seasonId),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,

View File

@@ -3,6 +3,7 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/search/result.dart';
import 'package:PiliPlus/utils/date_utils.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -18,6 +19,10 @@ class SearchArticleItem extends StatelessWidget {
fontSize: theme.textTheme.labelSmall!.fontSize,
color: theme.colorScheme.outline,
);
void onLongPress() => imageSaveDialog(
title: item.title.map((item) => item.text).join(),
cover: item.imageUrls?.firstOrNull,
);
return Material(
type: MaterialType.transparency,
child: InkWell(
@@ -28,10 +33,8 @@ class SearchArticleItem extends StatelessWidget {
'type': 'read',
},
),
onLongPress: () => imageSaveDialog(
title: item.title.map((item) => item.text).join(),
cover: item.imageUrls?.firstOrNull,
),
onLongPress: onLongPress,
onSecondaryTap: Utils.isMobile ? null : onLongPress,
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: StyleString.safeSpace,

View File

@@ -3,6 +3,7 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/search/result.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart';
class LiveItem extends StatelessWidget {
@@ -13,14 +14,16 @@ class LiveItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
void onLongPress() => imageSaveDialog(
title: liveItem.title.map((item) => item.text).join(),
cover: liveItem.cover,
);
return Card(
clipBehavior: Clip.hardEdge,
child: InkWell(
onTap: () => PageUtils.toLiveRoom(liveItem.roomid),
onLongPress: () => imageSaveDialog(
title: liveItem.title.map((item) => item.text).join(),
cover: liveItem.cover,
),
onLongPress: onLongPress,
onSecondaryTap: Utils.isMobile ? null : onLongPress,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [

View File

@@ -5,6 +5,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/search/result.dart';
import 'package:PiliPlus/utils/date_utils.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart';
class SearchPgcItem extends StatelessWidget {
@@ -19,14 +20,16 @@ class SearchPgcItem extends StatelessWidget {
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);
const TextStyle style = TextStyle(fontSize: 13);
void onLongPress() => imageSaveDialog(
title: item.title.map((item) => item.text).join(),
cover: item.cover,
);
return Material(
type: MaterialType.transparency,
child: InkWell(
onTap: () => PageUtils.viewPgc(seasonId: item.seasonId),
onLongPress: () => imageSaveDialog(
title: item.title.map((item) => item.text).join(),
cover: item.cover,
),
onLongPress: onLongPress,
onSecondaryTap: Utils.isMobile ? null : onLongPress,
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: StyleString.safeSpace,