feat: music search (#1270)

* tweak

* feat: music search
This commit is contained in:
My-Responsitories
2025-09-17 00:33:33 +08:00
committed by GitHub
parent 3897efd82f
commit 349a4dfc0b
3 changed files with 113 additions and 69 deletions

View File

@@ -1,3 +1,4 @@
import 'dart:io';
import 'dart:math';
import 'package:PiliPlus/common/widgets/badge.dart';
@@ -448,10 +449,8 @@ class _MusicDetailPageState extends CommonDynPageState<MusicDetailPage> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
GestureDetector(
// TODO: android intent ACTION_MEDIA_SEARCH
onTap: () => Utils.copyText(
item.musicTitle!,
),
onTap: () => _searchMusic(item),
onLongPress: () => Utils.copyText(item.musicTitle!),
behavior: HitTestBehavior.opaque,
child: MarqueeText(
item.musicTitle!,
@@ -493,13 +492,18 @@ class _MusicDetailPageState extends CommonDynPageState<MusicDetailPage> {
cid: item.mvCid!,
aid: item.mvAid,
),
child: ColoredBox(
color: theme.colorScheme.secondaryContainer
.withValues(alpha: 0.5),
child: DecoratedBox(
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(
Radius.circular(4),
),
color: theme.colorScheme.secondaryContainer
.withValues(alpha: 0.5),
),
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 2,
horizontal: 3,
vertical: 3,
horizontal: 4,
),
child: Row(
mainAxisSize: MainAxisSize.min,
@@ -676,4 +680,18 @@ class _MusicDetailPageState extends CommonDynPageState<MusicDetailPage> {
),
);
}
Future<void> _searchMusic(MusicDetail item) async {
final res =
Platform.isAndroid &&
(await Utils.channel.invokeMethod<bool>('music', {
'title': item.musicTitle,
'artist': item.originArtist ?? item.originArtistList,
'album': item.album,
}) ??
false);
if (!res) {
Utils.copyText(item.musicTitle!);
}
}
}