From c0a482ab786bef060557191e907775c4320bdd4f Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Thu, 21 Nov 2024 12:45:04 +0800 Subject: [PATCH] mod: memberpage: anim to top Signed-off-by: bggRGjQaUbCoE --- lib/http/member.dart | 12 ++++-------- lib/pages/member/new/member_page.dart | 8 ++++++++ lib/utils/extension.dart | 9 +++++++-- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/lib/http/member.dart b/lib/http/member.dart index 68f182cb..012d73e2 100644 --- a/lib/http/member.dart +++ b/lib/http/member.dart @@ -350,10 +350,8 @@ class MemberHttp { 'web_location': 1550101, 'order_avoided': orderAvoided, 'dm_img_list': '[]', - 'dm_img_str': dmImgStr.substring( - 0, (dmImgStr.length - 2).clamp(0, dmImgStr.length - 1)), - 'dm_cover_img_str': dmCoverImgStr.substring( - 0, (dmCoverImgStr.length - 2).clamp(0, dmCoverImgStr.length - 1)), + 'dm_img_str': dmImgStr, + 'dm_cover_img_str': dmCoverImgStr, 'dm_img_inter': '{"ds":[],"wh":[0,0,0],"of":[0,0,0]}', }); var res = await Request().get( @@ -390,10 +388,8 @@ class MemberHttp { 'platform': 'web', 'web_location': '333.999', 'dm_img_list': '[]', - 'dm_img_str': dmImgStr.substring( - 0, (dmImgStr.length - 2).clamp(0, dmImgStr.length - 1)), - 'dm_cover_img_str': dmCoverImgStr.substring( - 0, (dmCoverImgStr.length - 2).clamp(0, dmCoverImgStr.length - 1)), + 'dm_img_str': dmImgStr, + 'dm_cover_img_str': dmCoverImgStr, 'dm_img_inter': '{"ds":[],"wh":[0,0,0],"of":[0,0,0]}', 'x-bili-device-req-json': jsonEncode({"platform": "web", "device": "pc"}), 'x-bili-web-req-json': jsonEncode({"spm_id": "333.999"}), diff --git a/lib/pages/member/new/member_page.dart b/lib/pages/member/new/member_page.dart index c2874492..e4ec159c 100644 --- a/lib/pages/member/new/member_page.dart +++ b/lib/pages/member/new/member_page.dart @@ -11,6 +11,7 @@ import 'package:PiliPalaX/pages/member/new/controller.dart'; import 'package:PiliPalaX/pages/member/new/widget/user_info_card.dart'; import 'package:PiliPalaX/pages/member/view.dart'; import 'package:PiliPalaX/pages/member_dynamics/view.dart'; +import 'package:PiliPalaX/utils/extension.dart'; import 'package:PiliPalaX/utils/utils.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:flutter/material.dart'; @@ -28,6 +29,7 @@ class _MemberPageNewState extends State int? _mid; String? _heroTag; late final MemberControllerNew _userController; + final _key = GlobalKey(); @override void initState() { @@ -55,6 +57,7 @@ class _MemberPageNewState extends State builder: (_, constraints) { // if (constraints.maxHeight > constraints.maxWidth) { return ExtendedNestedScrollView( + key: _key, controller: _userController.scrollController, onlyOneScrollInBody: true, headerSliverBuilder: (context, innerBoxIsScrolled) { @@ -132,6 +135,11 @@ class _MemberPageNewState extends State Widget get _buildTab => TabBar( controller: _userController.tabController, tabs: _userController.tabs, + onTap: (value) { + if (_userController.tabController?.indexIsChanging == false) { + _key.currentState?.outerController.animToTop(); + } + }, ); Widget get _buildBody => SafeArea( diff --git a/lib/utils/extension.dart b/lib/utils/extension.dart index f230e0ac..950eac95 100644 --- a/lib/utils/extension.dart +++ b/lib/utils/extension.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:get/get.dart'; extension ImageExtension on num { int cacheSize(BuildContext context) { @@ -9,8 +10,12 @@ extension ImageExtension on num { extension ScrollControllerExt on ScrollController { void animToTop() { if (!hasClients) return; - animateTo(0, - duration: const Duration(milliseconds: 500), curve: Curves.easeInOut); + if (offset >= MediaQuery.of(Get.context!).size.height * 7) { + jumpTo(0); + } else { + animateTo(0, + duration: const Duration(milliseconds: 500), curve: Curves.easeInOut); + } } }