From 64047ed78a345c02f6914dd5d92939a82529621c Mon Sep 17 00:00:00 2001 From: fengshengxiong Date: Sun, 4 Aug 2024 16:44:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=83=A8=E5=88=86=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/global/download_manager.dart | 2 +- lib/modules/launch/launch_controller.dart | 3 +- .../album_song_list_controller.dart | 5 +- .../album_song_list/album_song_list_view.dart | 88 +++++++++++-------- .../controllers/music_player_controller.dart | 14 +-- .../custom_playlist_controller.dart | 5 +- .../custom_playlist/custom_playlist_view.dart | 73 +++++++++------ lib/modules/sideb/home/home_view.dart | 4 +- lib/modules/sideb/widgets/music_appbar.dart | 2 +- pubspec.yaml | 2 +- 10 files changed, 113 insertions(+), 85 deletions(-) diff --git a/lib/global/download_manager.dart b/lib/global/download_manager.dart index da68314..27e93f7 100644 --- a/lib/global/download_manager.dart +++ b/lib/global/download_manager.dart @@ -144,7 +144,7 @@ class DownloadManager { if (ObjUtil.isEmpty(musicModel.value.coverUrl)) { var thumbnails = playerModel.videoDetails?.thumbnail?.thumbnails; if (thumbnails != null && thumbnails.isNotEmpty) { - musicModel.value.coverUrl = thumbnails[0].url; + musicModel.value.coverUrl = thumbnails.last.url; } } if (ObjUtil.isEmpty(musicModel.value.musicType)) { diff --git a/lib/modules/launch/launch_controller.dart b/lib/modules/launch/launch_controller.dart index 7e56468..d110424 100644 --- a/lib/modules/launch/launch_controller.dart +++ b/lib/modules/launch/launch_controller.dart @@ -33,8 +33,7 @@ class LaunchController extends GetxController with GetSingleTickerProviderStateM _appLifecycleReactor = AppLifecycleReactor(); _appLifecycleReactor.listenToAppStateChanges(); - // 监听网络变化 - Get.putAsync(() async => NetworkConnectivityService()); + Get.put(NetworkConnectivityService()); _startTimer(); } diff --git a/lib/modules/sideb/album_song_list/album_song_list_controller.dart b/lib/modules/sideb/album_song_list/album_song_list_controller.dart index bdc6041..914e755 100644 --- a/lib/modules/sideb/album_song_list/album_song_list_controller.dart +++ b/lib/modules/sideb/album_song_list/album_song_list_controller.dart @@ -141,10 +141,7 @@ class AlbumSongListController extends GetxController { if (musicList.isNotEmpty) { int index = 0; if (type == 1) { - if (musicPlayerController.getMusicModel() != null) { - int currentIndex = musicList.indexWhere((e) => e.value.videoId == musicPlayerController.getMusicModel()!.value.videoId); - index = NumUtil.getRandomNumberExcludingCurrent(0, musicList.length, currentIndex); - } + index = NumUtil.getRandomNumber(0, musicList.length); } List playList = await _next(musicList[index].value.videoId, playlistId: musicList[index].value.playlistId); musicPlayerController.playMusic(playList[index].videoId, playList: playList); diff --git a/lib/modules/sideb/album_song_list/album_song_list_view.dart b/lib/modules/sideb/album_song_list/album_song_list_view.dart index 857c74f..09781bc 100644 --- a/lib/modules/sideb/album_song_list/album_song_list_view.dart +++ b/lib/modules/sideb/album_song_list/album_song_list_view.dart @@ -106,10 +106,15 @@ class AlbumSongListView extends StatelessWidget { SizedBox(height: 10.h), Row( children: [ - _buildPlayAll(Assets.sideBPlaylistPlayAll, 'Play all', 0), - SizedBox(width: 10.w), - _buildPlayAll(Assets.sideBPlaylistPlayAllRandom, 'Shuffle Playback', 1), - const Spacer(), + Expanded( + child: Row( + children: [ + _buildPlayAll(Assets.sideBPlaylistPlayAll, 'Play all', 0), + SizedBox(width: 10.w), + _buildPlayAll(Assets.sideBPlaylistPlayAllRandom, 'Shuffle', 1), + ], + ), + ), ClipOval( child: Material( color: Colors.transparent, @@ -138,38 +143,51 @@ class AlbumSongListView extends StatelessWidget { } Widget _buildPlayAll(String img, String label, int type) { - return GestureDetector( - onTap: () => controller.onTapPlayAll(type), - child: Container( - width: 100.w, - height: 32.h, - padding: const EdgeInsets.symmetric(horizontal: 4).w, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(16).r, - color: const Color(0x1A80F988), - ), - child: Row( - children: [ - Image.asset( - img, - width: 24.w, - height: 24.w, - ), - SizedBox(width: 4.w), - Expanded( - child: Obx(() { - return Text( - '$label (${controller.musicList.length})', - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - color: Colors.white, - fontSize: 14.sp, + return IntrinsicWidth( + child: GestureDetector( + onTap: () => controller.onTapPlayAll(type), + child: Container( + height: 32.h, + padding: const EdgeInsets.symmetric(horizontal: 4).w, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16).r, + color: const Color(0x1A80F988), + ), + child: Row( + children: [ + Image.asset( + img, + width: 24.w, + height: 24.w, + ), + SizedBox(width: 4.w), + Flexible( + child: Visibility( + visible: type == 0, + replacement: Text( + label, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: Colors.white, + fontSize: 13.sp, + ), ), - ); - }), - ), - ], + child: Obx(() { + return Text( + '$label (${controller.musicList.length})', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: Colors.white, + fontSize: 13.sp, + ), + ); + }), + ), + ), + ], + ), ), ), ); diff --git a/lib/modules/sideb/controllers/music_player_controller.dart b/lib/modules/sideb/controllers/music_player_controller.dart index 6209a36..0d4583e 100644 --- a/lib/modules/sideb/controllers/music_player_controller.dart +++ b/lib/modules/sideb/controllers/music_player_controller.dart @@ -222,17 +222,17 @@ class MusicPlayerController extends GetxController { /// 开始/结束拖动进度条 Future seekStartEnd(int value) async { - if (processingState.value == ProcessingState.buffering || processingState.value == ProcessingState.ready) { - if (value == 0) { + if (value == 0) { + if (processingState.value == ProcessingState.ready) { _seekFrontPlaying = _player.playing; if (_player.playing) { _player.pause(); } - } else { - // 拖动前如果是播放状态,拖动完成后恢复播放 - if (_seekFrontPlaying) { - _player.play(); - } + } + } else { + // 拖动前如果是播放状态,拖动完成后恢复播放 + if (_seekFrontPlaying) { + _player.play(); } } } diff --git a/lib/modules/sideb/custom_playlist/custom_playlist_controller.dart b/lib/modules/sideb/custom_playlist/custom_playlist_controller.dart index f006a33..2b580b5 100644 --- a/lib/modules/sideb/custom_playlist/custom_playlist_controller.dart +++ b/lib/modules/sideb/custom_playlist/custom_playlist_controller.dart @@ -65,10 +65,7 @@ class CustomPlaylistController extends GetxController { if (musicList.isNotEmpty) { int index = 0; if (type == 1) { - if (musicPlayerController.getMusicModel() != null) { - int currentIndex = musicList.indexWhere((e) => e.value.videoId == musicPlayerController.getMusicModel()!.value.videoId); - index = NumUtil.getRandomNumberExcludingCurrent(0, musicList.length, currentIndex); - } + index = NumUtil.getRandomNumber(0, musicList.length); } musicPlayerController.playMusic(musicList[index].value.videoId, playList: musicList.map((e) => e.value).toList()); } diff --git a/lib/modules/sideb/custom_playlist/custom_playlist_view.dart b/lib/modules/sideb/custom_playlist/custom_playlist_view.dart index 6ef01fb..3f4a7d4 100644 --- a/lib/modules/sideb/custom_playlist/custom_playlist_view.dart +++ b/lib/modules/sideb/custom_playlist/custom_playlist_view.dart @@ -140,7 +140,7 @@ class CustomPlaylistView extends StatelessWidget { children: [ _buildPlayAll(Assets.sideBPlaylistPlayAll, 'Play all', 0), SizedBox(width: 10.w), - _buildPlayAll(Assets.sideBPlaylistPlayAllRandom, 'Shuffle Playback', 1), + _buildPlayAll(Assets.sideBPlaylistPlayAllRandom, 'Shuffle', 1), ], ), ), @@ -216,34 +216,51 @@ class CustomPlaylistView extends StatelessWidget { } Widget _buildPlayAll(String img, String label, int type) { - return GestureDetector( - onTap: () => controller.onTapPlayAll(type), - child: Container( - width: 100.w, - height: 32.h, - padding: const EdgeInsets.symmetric(horizontal: 4).w, - child: Row( - children: [ - Image.asset( - img, - width: 24.w, - height: 24.w, - ), - SizedBox(width: 4.w), - Expanded( - child: Obx(() { - return Text( - '$label (${controller.musicList.length})', - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - color: Colors.white, - fontSize: 14.sp, + return IntrinsicWidth( + child: GestureDetector( + onTap: () => controller.onTapPlayAll(type), + child: Container( + height: 32.h, + padding: const EdgeInsets.symmetric(horizontal: 4).w, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16).r, + color: const Color(0x1A80F988), + ), + child: Row( + children: [ + Image.asset( + img, + width: 24.w, + height: 24.w, + ), + SizedBox(width: 4.w), + Flexible( + child: Visibility( + visible: type == 0, + replacement: Text( + label, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: Colors.white, + fontSize: 13.sp, + ), ), - ); - }), - ), - ], + child: Obx(() { + return Text( + '$label (${controller.musicList.length})', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: Colors.white, + fontSize: 13.sp, + ), + ); + }), + ), + ), + ], + ), ), ), ); diff --git a/lib/modules/sideb/home/home_view.dart b/lib/modules/sideb/home/home_view.dart index bdcf4a5..833e494 100644 --- a/lib/modules/sideb/home/home_view.dart +++ b/lib/modules/sideb/home/home_view.dart @@ -137,8 +137,8 @@ class HomeView extends GetView { gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, mainAxisSpacing: 0, - crossAxisSpacing: 10.h, - childAspectRatio: 60.w / (1.sw - 16.w), + crossAxisSpacing: 12.w, + childAspectRatio: 60.w / (1.sw - 48.w), ), itemBuilder: (context, index) { final musicModel = browseGroupModel.browseList![index]; diff --git a/lib/modules/sideb/widgets/music_appbar.dart b/lib/modules/sideb/widgets/music_appbar.dart index 591668c..1e7aa0a 100644 --- a/lib/modules/sideb/widgets/music_appbar.dart +++ b/lib/modules/sideb/widgets/music_appbar.dart @@ -71,7 +71,7 @@ class MusicAppbar extends StatelessWidget { width: 42.w, height: 42.w, decoration: BoxDecoration( - color: const Color(0x26FFFFFF), + color: const Color(0x66000000), borderRadius: BorderRadius.circular(42.w), border: isBackBorder ? Border.all(color: const Color(0x4DFFFFFF), width: 1.w) : null, ), diff --git a/pubspec.yaml b/pubspec.yaml index fb48f04..06e587b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.0.3+13 +version: 1.0.4+14 environment: sdk: '>=3.4.1 <4.0.0'