opt anim to top

opt refresh

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-05-23 22:37:57 +08:00
parent 0a9897f6a4
commit 81cfe3efe1
28 changed files with 154 additions and 43 deletions

View File

@@ -31,6 +31,8 @@ class _FavArticlePageState extends State<FavArticlePage>
return refreshIndicator(
onRefresh: _favArticleController.onRefresh,
child: CustomScrollView(
controller: _favArticleController.scrollController,
physics: const AlwaysScrollableScrollPhysics(),
slivers: [
SliverPadding(
padding: EdgeInsets.only(

View File

@@ -36,6 +36,8 @@ class _FavNoteChildPageState extends State<FavNoteChildPage>
refreshIndicator(
onRefresh: _favNoteController.onRefresh,
child: CustomScrollView(
controller: _favNoteController.scrollController,
physics: const AlwaysScrollableScrollPhysics(),
slivers: [
SliverPadding(
padding: EdgeInsets.only(

View File

@@ -1,5 +1,8 @@
import 'package:PiliPlus/pages/fav/note/child_view.dart';
import 'package:PiliPlus/pages/fav/note/controller.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class FavNotePage extends StatefulWidget {
const FavNotePage({super.key});
@@ -58,6 +61,16 @@ class _FavNotePageState extends State<FavNotePage>
const Tab(text: '未发布笔记'),
const Tab(text: '公开笔记'),
],
onTap: (index) {
try {
if (!_tabController.indexIsChanging) {
Get.find<FavNoteController>(
tag: index == 0 ? 'false' : 'true')
.scrollController
.animToTop();
}
} catch (_) {}
},
),
),
// TextButton(

View File

@@ -43,6 +43,8 @@ class _FavPgcChildPageState extends State<FavPgcChildPage>
refreshIndicator(
onRefresh: _favPgcController.onRefresh,
child: CustomScrollView(
controller: _favPgcController.scrollController,
physics: const AlwaysScrollableScrollPhysics(),
slivers: [
SliverPadding(
padding: EdgeInsets.only(

View File

@@ -1,5 +1,8 @@
import 'package:PiliPlus/pages/fav/pgc/child_view.dart';
import 'package:PiliPlus/pages/fav/pgc/controller.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class FavPgcPage extends StatefulWidget {
const FavPgcPage({super.key, required this.type});
@@ -61,6 +64,15 @@ class _FavPgcPageState extends State<FavPgcPage>
Tab(text: '在看'),
Tab(text: '看过'),
],
onTap: (index) {
try {
if (!_tabController.indexIsChanging) {
Get.find<FavPgcController>(
tag: '${widget.type}${index + 1}',
).scrollController.animToTop();
}
} catch (_) {}
},
),
),
// TextButton(

View File

@@ -30,6 +30,8 @@ class _FavTopicPageState extends State<FavTopicPage>
return refreshIndicator(
onRefresh: _controller.onRefresh,
child: CustomScrollView(
controller: _controller.scrollController,
physics: const AlwaysScrollableScrollPhysics(),
slivers: [
SliverPadding(
padding: EdgeInsets.only(

View File

@@ -2,8 +2,11 @@ import 'package:PiliPlus/common/widgets/scroll_physics.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/common/fav_type.dart';
import 'package:PiliPlus/models/user/fav_folder.dart';
import 'package:PiliPlus/pages/fav/article/controller.dart';
import 'package:PiliPlus/pages/fav/topic/controller.dart';
import 'package:PiliPlus/pages/fav/video/controller.dart';
import 'package:PiliPlus/pages/fav_folder_sort/view.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
@@ -122,6 +125,23 @@ class _FavPageState extends State<FavPage> with SingleTickerProviderStateMixin {
isScrollable: true,
tabAlignment: TabAlignment.start,
tabs: FavTabType.values.map((item) => Tab(text: item.title)).toList(),
onTap: (index) {
try {
if (!_tabController.indexIsChanging) {
switch (FavTabType.values[index]) {
case FavTabType.video:
_favController.scrollController.animToTop();
case FavTabType.article:
Get.find<FavArticleController>()
.scrollController
.animToTop();
case FavTabType.topic:
Get.find<FavTopicController>().scrollController.animToTop();
default:
}
}
} catch (_) {}
},
),
),
body: SafeArea(