opt dyn topic

opt member opus

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-05-18 17:46:42 +08:00
parent 0de2603e30
commit 40502e3bff
11 changed files with 55 additions and 18 deletions

View File

@@ -20,6 +20,8 @@ class DynTopicController
String offset = '';
Rx<TopicSortByConf?> topicSortByConf = Rx<TopicSortByConf?>(null);
double? appbarOffset;
// top
final isLogin = Accounts.main.isLogin;
Rx<bool?> isFav = Rx<bool?>(null);
@@ -63,7 +65,14 @@ class DynTopicController
@override
Future<void> onReload() {
scrollController.jumpToTop();
if (appbarOffset != null) {
if (scrollController.hasClients &&
scrollController.offset > appbarOffset!) {
scrollController.jumpTo(appbarOffset!);
}
} else {
scrollController.jumpToTop();
}
return super.onReload();
}

View File

@@ -123,11 +123,14 @@ class _DynTopicPageState extends State<DynTopicPage> {
}
Widget _buildAppBar(ThemeData theme, LoadingState<TopDetails?> topState) {
late final paddingTop = MediaQuery.paddingOf(context).top;
return switch (topState) {
Loading() => const SliverAppBar(),
Success(:var response) when (topState.dataOrNull != null) =>
DynamicSliverAppBarMedium(
pinned: true,
callback: (value) => _controller.appbarOffset =
value - kToolbarHeight - paddingTop - 7,
title: IgnorePointer(child: Text(response!.topicItem!.name!)),
flexibleSpace: Container(
decoration: BoxDecoration(
@@ -140,7 +143,7 @@ class _DynTopicPageState extends State<DynTopicPage> {
),
),
padding: EdgeInsets.only(
top: MediaQuery.paddingOf(context).top,
top: paddingTop,
left: 12,
right: 12,
),