From bd70a34f577036a58f899618b9e584cd3c15cc56 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Sat, 23 Nov 2024 00:39:36 +0800 Subject: [PATCH] fix: get tag, history progress Signed-off-by: bggRGjQaUbCoE --- lib/pages/history/widgets/item.dart | 42 +++++++++---------- lib/pages/later/controller.dart | 1 + lib/pages/live_room/controller.dart | 2 +- lib/pages/member/new/member_page.dart | 4 +- lib/pages/member_search/controller.dart | 8 ++-- lib/pages/member_search/search_archive.dart | 10 ++++- lib/pages/member_search/search_dynamic.dart | 10 ++++- lib/pages/video/detail/reply/view.dart | 1 + .../detail/reply/widgets/reply_item_grpc.dart | 17 +++++--- 9 files changed, 58 insertions(+), 37 deletions(-) diff --git a/lib/pages/history/widgets/item.dart b/lib/pages/history/widgets/item.dart index daed61cb..c92bb625 100644 --- a/lib/pages/history/widgets/item.dart +++ b/lib/pages/history/widgets/item.dart @@ -278,27 +278,27 @@ class HistoryItem extends StatelessWidget { ), ), ), - videoItem.progress != 0 - ? Positioned( - left: 3, - right: 3, - bottom: 0, - child: ClipRRect( - borderRadius: BorderRadius.only( - bottomLeft: Radius.circular( - StyleString.imgRadius.x), - bottomRight: Radius.circular( - StyleString.imgRadius.x), - ), - child: LinearProgressIndicator( - value: videoItem.progress == -1 - ? 100 - : videoItem.progress / - videoItem.duration, - ), - ), - ) - : const SizedBox() + if (videoItem.duration != null && + videoItem.duration != 0 && + videoItem.progress != 0) + Positioned( + left: 3, + right: 3, + bottom: 0, + child: ClipRRect( + borderRadius: BorderRadius.only( + bottomLeft: + Radius.circular(StyleString.imgRadius.x), + bottomRight: + Radius.circular(StyleString.imgRadius.x), + ), + child: LinearProgressIndicator( + value: videoItem.progress == -1 + ? 100 + : videoItem.progress / videoItem.duration, + ), + ), + ) ], ), VideoContent(videoItem: videoItem, ctr: ctr) diff --git a/lib/pages/later/controller.dart b/lib/pages/later/controller.dart index 8ad21154..e28abb61 100644 --- a/lib/pages/later/controller.dart +++ b/lib/pages/later/controller.dart @@ -51,6 +51,7 @@ class LaterController extends CommonController { if (aid != null) { List list = (loadingState.value as Success).response; list.removeWhere((e) => e.aid == aid); + count.value -= 1; loadingState.value = LoadingState.success(list); } else { loadingState.value = LoadingState.loading(); diff --git a/lib/pages/live_room/controller.dart b/lib/pages/live_room/controller.dart index 76b32d59..3bb31cc4 100644 --- a/lib/pages/live_room/controller.dart +++ b/lib/pages/live_room/controller.dart @@ -113,7 +113,7 @@ class LiveRoomController extends GetxController { if (scrollController.hasClients) { scrollController.animateTo( scrollController.position.maxScrollExtent, - duration: const Duration(milliseconds: 200), + duration: const Duration(milliseconds: 500), curve: Curves.linearToEaseOut, ); } diff --git a/lib/pages/member/new/member_page.dart b/lib/pages/member/new/member_page.dart index e8b019a0..eb6aa8ed 100644 --- a/lib/pages/member/new/member_page.dart +++ b/lib/pages/member/new/member_page.dart @@ -27,7 +27,7 @@ class MemberPageNew extends StatefulWidget { class _MemberPageNewState extends State with TickerProviderStateMixin { int? _mid; - String? _heroTag; + late final String _heroTag; late final MemberControllerNew _userController; final _key = GlobalKey(); @@ -35,7 +35,7 @@ class _MemberPageNewState extends State void initState() { super.initState(); _mid = int.parse(Get.parameters['mid']!); - _heroTag = Get.arguments['heroTag'] ?? Utils.makeHeroTag(_mid); + _heroTag = Utils.makeHeroTag(_mid); _userController = Get.put( MemberControllerNew(mid: _mid), tag: _heroTag, diff --git a/lib/pages/member_search/controller.dart b/lib/pages/member_search/controller.dart index 670c7427..2a6bfa29 100644 --- a/lib/pages/member_search/controller.dart +++ b/lib/pages/member_search/controller.dart @@ -50,9 +50,11 @@ class MemberSearchController extends GetxController hasData.value = true; dynamicCount.value = -1; + dynamicState.value = LoadingState.loading(); refreshArchive(); archiveCount.value = -1; + archiveState.value = LoadingState.loading(); refreshDynamic(); } } @@ -60,14 +62,12 @@ class MemberSearchController extends GetxController Future refreshDynamic() async { dynamicPn = 1; isEndDynamic = false; - dynamicState.value = LoadingState.loading(); await searchDynamic(); } Future refreshArchive() async { archivePn = 1; isEndArchive = false; - archiveState.value = LoadingState.loading(); await searchArchives(); } @@ -83,7 +83,7 @@ class MemberSearchController extends GetxController if (isRefresh) { dynamicCount.value = res['count']; } - if (dynamicState.value is Success) { + if (isRefresh.not && dynamicState.value is Success) { res['data'].insertAll(0, (dynamicState.value as Success).response); } dynamicState.value = LoadingState.success(res['data']); @@ -109,7 +109,7 @@ class MemberSearchController extends GetxController if (isRefresh) { archiveCount.value = res['data'].page['count']; } - if (archiveState.value is Success) { + if (isRefresh.not && archiveState.value is Success) { res['data'] .list .vlist diff --git a/lib/pages/member_search/search_archive.dart b/lib/pages/member_search/search_archive.dart index 2c66f1bb..32d54a80 100644 --- a/lib/pages/member_search/search_archive.dart +++ b/lib/pages/member_search/search_archive.dart @@ -64,11 +64,17 @@ class SearchArchive extends StatelessWidget { ), ) : errorWidget( - callback: ctr.refreshArchive, + callback: () { + ctr.archiveState.value = LoadingState.loading(); + ctr.refreshArchive(); + }, ), Error() => errorWidget( errMsg: loadingState.errMsg, - callback: ctr.refreshArchive, + callback: () { + ctr.archiveState.value = LoadingState.loading(); + ctr.refreshArchive(); + }, ), LoadingState() => throw UnimplementedError(), }; diff --git a/lib/pages/member_search/search_dynamic.dart b/lib/pages/member_search/search_dynamic.dart index 634ea4b5..58858671 100644 --- a/lib/pages/member_search/search_dynamic.dart +++ b/lib/pages/member_search/search_dynamic.dart @@ -93,11 +93,17 @@ class SearchDynamic extends StatelessWidget { ), ) : errorWidget( - callback: ctr.refreshDynamic, + callback: () { + ctr.dynamicState.value = LoadingState.loading(); + ctr.refreshDynamic(); + }, ), Error() => errorWidget( errMsg: loadingState.errMsg, - callback: ctr.refreshDynamic, + callback: () { + ctr.dynamicState.value = LoadingState.loading(); + ctr.refreshDynamic(); + }, ), LoadingState() => throw UnimplementedError(), }; diff --git a/lib/pages/video/detail/reply/view.dart b/lib/pages/video/detail/reply/view.dart index 6c41593f..365bcf22 100644 --- a/lib/pages/video/detail/reply/view.dart +++ b/lib/pages/video/detail/reply/view.dart @@ -247,6 +247,7 @@ class _VideoReplyPanelState extends State onDelete: _videoReplyController.onMDelete, isTop: _videoReplyController.hasUpTop && index == 0, upMid: loadingState.response.subjectControl.upMid, + getTag: () => heroTag, ); } }, diff --git a/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart b/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart index 9d759bf5..56625218 100644 --- a/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart @@ -36,6 +36,7 @@ class ReplyItemGrpc extends StatelessWidget { this.upMid, this.isTop = false, this.showDialogue, + this.getTag, }); final ReplyInfo replyItem; final String? replyLevel; @@ -48,6 +49,7 @@ class ReplyItemGrpc extends StatelessWidget { final dynamic upMid; final bool isTop; final VoidCallback? showDialogue; + final Function? getTag; @override Widget build(BuildContext context) { @@ -298,6 +300,7 @@ class ReplyItemGrpc extends StatelessWidget { null, textPainter, didExceedMaxLines, + getTag, ), ], ), @@ -328,6 +331,7 @@ class ReplyItemGrpc extends StatelessWidget { onDelete!(rpid, replyItem.id.toInt()); } }, + getTag: getTag, ), ), ], @@ -440,6 +444,7 @@ class ReplyItemRow extends StatelessWidget { this.replyReply, this.onDelete, this.upMid, + this.getTag, }); final int count; final List replies; @@ -449,6 +454,7 @@ class ReplyItemRow extends StatelessWidget { Function? replyReply; final Function(dynamic rpid)? onDelete; final dynamic upMid; + final Function? getTag; @override Widget build(BuildContext context) { @@ -558,6 +564,7 @@ class ReplyItemRow extends StatelessWidget { replyItem, null, null, + getTag, ), ], ), @@ -616,6 +623,7 @@ InlineSpan buildContent( fReplyItem, textPainter, didExceedMaxLines, + getTag, ) { final String routePath = Get.currentRoute; bool isVideoPage = routePath.startsWith('/video'); @@ -763,11 +771,10 @@ InlineSpan buildContent( for (int i = 0; i < split.length; i++) { seek += split[i] * pow(60, i).toInt(); } - int duration = - Get.find(tag: Get.arguments['heroTag']) - .data - .timeLength ?? - 0; + int duration = Get.find( + tag: getTag?.call() ?? Get.arguments['heroTag'], + ).data.timeLength ?? + 0; isValid = seek * 1000 <= duration; } catch (e) { debugPrint('failed to validate: $e');