mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
mod: memberpage: anim to top
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -350,10 +350,8 @@ class MemberHttp {
|
|||||||
'web_location': 1550101,
|
'web_location': 1550101,
|
||||||
'order_avoided': orderAvoided,
|
'order_avoided': orderAvoided,
|
||||||
'dm_img_list': '[]',
|
'dm_img_list': '[]',
|
||||||
'dm_img_str': dmImgStr.substring(
|
'dm_img_str': dmImgStr,
|
||||||
0, (dmImgStr.length - 2).clamp(0, dmImgStr.length - 1)),
|
'dm_cover_img_str': dmCoverImgStr,
|
||||||
'dm_cover_img_str': dmCoverImgStr.substring(
|
|
||||||
0, (dmCoverImgStr.length - 2).clamp(0, dmCoverImgStr.length - 1)),
|
|
||||||
'dm_img_inter': '{"ds":[],"wh":[0,0,0],"of":[0,0,0]}',
|
'dm_img_inter': '{"ds":[],"wh":[0,0,0],"of":[0,0,0]}',
|
||||||
});
|
});
|
||||||
var res = await Request().get(
|
var res = await Request().get(
|
||||||
@@ -390,10 +388,8 @@ class MemberHttp {
|
|||||||
'platform': 'web',
|
'platform': 'web',
|
||||||
'web_location': '333.999',
|
'web_location': '333.999',
|
||||||
'dm_img_list': '[]',
|
'dm_img_list': '[]',
|
||||||
'dm_img_str': dmImgStr.substring(
|
'dm_img_str': dmImgStr,
|
||||||
0, (dmImgStr.length - 2).clamp(0, dmImgStr.length - 1)),
|
'dm_cover_img_str': dmCoverImgStr,
|
||||||
'dm_cover_img_str': dmCoverImgStr.substring(
|
|
||||||
0, (dmCoverImgStr.length - 2).clamp(0, dmCoverImgStr.length - 1)),
|
|
||||||
'dm_img_inter': '{"ds":[],"wh":[0,0,0],"of":[0,0,0]}',
|
'dm_img_inter': '{"ds":[],"wh":[0,0,0],"of":[0,0,0]}',
|
||||||
'x-bili-device-req-json': jsonEncode({"platform": "web", "device": "pc"}),
|
'x-bili-device-req-json': jsonEncode({"platform": "web", "device": "pc"}),
|
||||||
'x-bili-web-req-json': jsonEncode({"spm_id": "333.999"}),
|
'x-bili-web-req-json': jsonEncode({"spm_id": "333.999"}),
|
||||||
|
|||||||
@@ -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/new/widget/user_info_card.dart';
|
||||||
import 'package:PiliPalaX/pages/member/view.dart';
|
import 'package:PiliPalaX/pages/member/view.dart';
|
||||||
import 'package:PiliPalaX/pages/member_dynamics/view.dart';
|
import 'package:PiliPalaX/pages/member_dynamics/view.dart';
|
||||||
|
import 'package:PiliPalaX/utils/extension.dart';
|
||||||
import 'package:PiliPalaX/utils/utils.dart';
|
import 'package:PiliPalaX/utils/utils.dart';
|
||||||
import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart';
|
import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -28,6 +29,7 @@ class _MemberPageNewState extends State<MemberPageNew>
|
|||||||
int? _mid;
|
int? _mid;
|
||||||
String? _heroTag;
|
String? _heroTag;
|
||||||
late final MemberControllerNew _userController;
|
late final MemberControllerNew _userController;
|
||||||
|
final _key = GlobalKey<ExtendedNestedScrollViewState>();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
@@ -55,6 +57,7 @@ class _MemberPageNewState extends State<MemberPageNew>
|
|||||||
builder: (_, constraints) {
|
builder: (_, constraints) {
|
||||||
// if (constraints.maxHeight > constraints.maxWidth) {
|
// if (constraints.maxHeight > constraints.maxWidth) {
|
||||||
return ExtendedNestedScrollView(
|
return ExtendedNestedScrollView(
|
||||||
|
key: _key,
|
||||||
controller: _userController.scrollController,
|
controller: _userController.scrollController,
|
||||||
onlyOneScrollInBody: true,
|
onlyOneScrollInBody: true,
|
||||||
headerSliverBuilder: (context, innerBoxIsScrolled) {
|
headerSliverBuilder: (context, innerBoxIsScrolled) {
|
||||||
@@ -132,6 +135,11 @@ class _MemberPageNewState extends State<MemberPageNew>
|
|||||||
Widget get _buildTab => TabBar(
|
Widget get _buildTab => TabBar(
|
||||||
controller: _userController.tabController,
|
controller: _userController.tabController,
|
||||||
tabs: _userController.tabs,
|
tabs: _userController.tabs,
|
||||||
|
onTap: (value) {
|
||||||
|
if (_userController.tabController?.indexIsChanging == false) {
|
||||||
|
_key.currentState?.outerController.animToTop();
|
||||||
|
}
|
||||||
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
Widget get _buildBody => SafeArea(
|
Widget get _buildBody => SafeArea(
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
|
||||||
extension ImageExtension on num {
|
extension ImageExtension on num {
|
||||||
int cacheSize(BuildContext context) {
|
int cacheSize(BuildContext context) {
|
||||||
@@ -9,8 +10,12 @@ extension ImageExtension on num {
|
|||||||
extension ScrollControllerExt on ScrollController {
|
extension ScrollControllerExt on ScrollController {
|
||||||
void animToTop() {
|
void animToTop() {
|
||||||
if (!hasClients) return;
|
if (!hasClients) return;
|
||||||
animateTo(0,
|
if (offset >= MediaQuery.of(Get.context!).size.height * 7) {
|
||||||
duration: const Duration(milliseconds: 500), curve: Curves.easeInOut);
|
jumpTo(0);
|
||||||
|
} else {
|
||||||
|
animateTo(0,
|
||||||
|
duration: const Duration(milliseconds: 500), curve: Curves.easeInOut);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user