diff --git a/lib/http/danmaku.dart b/lib/http/danmaku.dart index 8370bed9d..1a7bca934 100644 --- a/lib/http/danmaku.dart +++ b/lib/http/danmaku.dart @@ -76,7 +76,7 @@ abstract final class DanmakuHttp { required int id, }) async { final data = { - 'op': isLike ? 2 : 1, + 'op': isLike ? 1 : 2, 'dmid': id, 'oid': cid, 'platform': 'web_player', diff --git a/lib/pages/audio/controller.dart b/lib/pages/audio/controller.dart index c1893f178..82ac057b5 100644 --- a/lib/pages/audio/controller.dart +++ b/lib/pages/audio/controller.dart @@ -73,6 +73,7 @@ class AudioController extends GetxController String? _prev; String? _next; + bool get reachStart => _prev == null; @override void onInit() { diff --git a/lib/pages/audio/view.dart b/lib/pages/audio/view.dart index 252cb5cfc..5a184f962 100644 --- a/lib/pages/audio/view.dart +++ b/lib/pages/audio/view.dart @@ -179,9 +179,11 @@ class _AudioPageState extends State { onRefresh: () => _controller.loadPrev(context), child: CustomScrollView( controller: scrollController, - physics: const AlwaysScrollableScrollPhysics( - parent: ClampingScrollPhysics(), - ), + physics: _controller.reachStart + ? const ClampingScrollPhysics() + : const AlwaysScrollableScrollPhysics( + parent: ClampingScrollPhysics(), + ), slivers: [ SliverPadding( padding: EdgeInsets.only( diff --git a/lib/pages/video/widgets/header_control.dart b/lib/pages/video/widgets/header_control.dart index e7a2226b1..1c9364367 100644 --- a/lib/pages/video/widgets/header_control.dart +++ b/lib/pages/video/widgets/header_control.dart @@ -71,14 +71,15 @@ class HeaderControl extends StatefulWidget { SmartDialog.showToast('请先登录'); return false; } + final isLike = !extra.isLike; final res = await DanmakuHttp.danmakuLike( - isLike: extra.isLike, + isLike: isLike, cid: cid, id: extra.id, ); if (res.isSuccess) { - extra.isLike = !extra.isLike; - SmartDialog.showToast('点赞成功'); + extra.isLike = isLike; + SmartDialog.showToast('${isLike ? '' : '取消'}点赞成功'); return true; } else { res.toast();