mod: memberpage: anim to top

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-11-21 12:45:04 +08:00
parent f54859098c
commit c0a482ab78
3 changed files with 19 additions and 10 deletions

View File

@@ -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"}),

View File

@@ -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<MemberPageNew>
int? _mid;
String? _heroTag;
late final MemberControllerNew _userController;
final _key = GlobalKey<ExtendedNestedScrollViewState>();
@override
void initState() {
@@ -55,6 +57,7 @@ class _MemberPageNewState extends State<MemberPageNew>
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<MemberPageNew>
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(

View File

@@ -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);
}
}
}