diff --git a/lib/models/backup_recover_controller.dart b/lib/models/backup_recover_controller.dart index 71f3f3f..8656f31 100644 --- a/lib/models/backup_recover_controller.dart +++ b/lib/models/backup_recover_controller.dart @@ -198,6 +198,7 @@ class BackupREcoverController extends GetxController { Get.defaultDialog( title: "提 示".tr, middleText: '${"恢复成功,请重启程序".tr}?', + barrierDismissible: false, confirm: ElevatedButton( onPressed: () async { Get.closeAllSnackbars(); @@ -211,15 +212,6 @@ class BackupREcoverController extends GetxController { ), ), ), - cancel: ElevatedButton( - onPressed: () => Get.back(), - child: Obx( - () => Text( - "取消".tr, - style: TextStyle(color: CTheme.inversePrimary), - ), - ), - ), ); } } diff --git a/lib/models/lyric_controller.dart b/lib/models/lyric_controller.dart index 7574a93..2085fc4 100644 --- a/lib/models/lyric_controller.dart +++ b/lib/models/lyric_controller.dart @@ -48,6 +48,8 @@ class SongLyricController extends GetxController { String? downloadDir; + bool isInitShowAdjustLyricSpeedOverlay = false; + SongLyricController() { if (!kReleaseMode) { fakeLyricList(); diff --git a/lib/pages/home.dart b/lib/pages/home.dart index b71c7c8..1ec1267 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; +import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import '../theme/theme.dart'; import '../widgets/nodata.dart'; @@ -26,11 +27,19 @@ class _HomePageState extends State { final playerTileController = Get.find(); final songLyricController = Get.find(); + final ItemScrollController _itemScrollController = ItemScrollController(); + void go2song(int index) async { songLyricController.updateController(); await Get.toNamed("/song", arguments: {"currentSongIndex": index}); playerTileController.playingSong = playlistController.playingSong(); playlistController.updateSelectedSong(); + + _itemScrollController.scrollTo( + index: playlistController.currentSongIndex!, + duration: CTheme.animationDuration, + curve: Curves.easeInOutCubic, + ); } bool closeOnConfirmed() { @@ -91,7 +100,8 @@ class _HomePageState extends State { return Obx( () => Container( color: CTheme.background, - child: ListView.builder( + child: ScrollablePositionedList.builder( + itemScrollController: _itemScrollController, itemCount: playlistController.playlist.length, itemBuilder: (count, index) { final song = playlistController.playlist[index]; diff --git a/lib/pages/song.dart b/lib/pages/song.dart index 0f5d2c0..e50d134 100644 --- a/lib/pages/song.dart +++ b/lib/pages/song.dart @@ -34,7 +34,6 @@ class _SongPageState extends State { final currentSongIndex = Get.arguments["currentSongIndex"]; final isShowAdjustLyricSpeedOverlay = false.obs; - bool isInitShowAdjustLyricSpeedOverlay = false; @override void initState() { @@ -516,10 +515,10 @@ class _SongPageState extends State { isShowAdjustLyricSpeedOverlay.value = !isShowAdjustLyricSpeedOverlay.value; - // print(isShowAdjustLyricSpeedOverlay); - - if (!isInitShowAdjustLyricSpeedOverlay) { - isInitShowAdjustLyricSpeedOverlay = true; + if (!songLyricController + .isInitShowAdjustLyricSpeedOverlay) { + songLyricController.isInitShowAdjustLyricSpeedOverlay = + true; showAdjustLyricSpeedOverlay( context, playlistController diff --git a/lib/theme/theme.dart b/lib/theme/theme.dart index 8712320..1c081d5 100644 --- a/lib/theme/theme.dart +++ b/lib/theme/theme.dart @@ -52,6 +52,8 @@ class CTheme { static const double padding = 4.0; static const double margin = 4.0; static const double iconSize = 24.0; + + static const Duration animationDuration = Durations.long4; } class CIcons { diff --git a/pubspec.lock b/pubspec.lock index fb40a2a..588125f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -683,6 +683,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.27.7" + scrollable_positioned_list: + dependency: "direct main" + description: + name: scrollable_positioned_list + sha256: "1b54d5f1329a1e263269abc9e2543d90806131aa14fe7c6062a8054d57249287" + url: "https://pub.dev" + source: hosted + version: "0.3.8" sky_engine: dependency: transitive description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index 82d88ad..1b04904 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -57,6 +57,7 @@ dependencies: percent_indicator: ^4.0.1 package_info_plus: ^8.0.0 permission_handler: ^11.3.1 + scrollable_positioned_list: ^0.3.8 # this automatically add from the cmd: `flutter_rust_bridge_codegen integrate` rust_lib_musicbox: