Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-02-19 14:37:02 +08:00
parent 736478b1c5
commit e3a1eb5c87
10 changed files with 261 additions and 274 deletions

View File

@@ -4,13 +4,10 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart';
import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart';
import 'package:PiliPlus/models/common/nav_bar_config.dart';
import 'package:PiliPlus/models/dynamics/result.dart';
import 'package:PiliPlus/pages/common/common_page.dart';
import 'package:PiliPlus/pages/dynamics/controller.dart';
import 'package:PiliPlus/pages/dynamics/widgets/dynamic_panel.dart';
import 'package:PiliPlus/pages/dynamics_tab/controller.dart';
import 'package:PiliPlus/pages/main/controller.dart';
import 'package:PiliPlus/utils/extension/get_ext.dart';
import 'package:PiliPlus/utils/global_data.dart';
import 'package:PiliPlus/utils/waterfall.dart';
@@ -28,39 +25,16 @@ class DynamicsTabPage extends StatefulWidget {
State<DynamicsTabPage> createState() => _DynamicsTabPageState();
}
class _DynamicsTabPageState
extends CommonPageState<DynamicsTabPage, DynamicsTabController>
class _DynamicsTabPageState extends State<DynamicsTabPage>
with AutomaticKeepAliveClientMixin, DynMixin {
StreamSubscription? _listener;
late final MainController _mainController = Get.find<MainController>();
DynamicsController dynamicsController = Get.putOrFind(DynamicsController.new);
@override
late final DynamicsTabController controller;
@override
bool get wantKeepAlive => true;
bool get checkPage =>
_mainController.navigationBars[0] != NavigationBarType.dynamics &&
_mainController.selectedIndex.value == 0;
@override
bool onNotificationType1(UserScrollNotification notification) {
if (checkPage) {
return false;
}
return super.onNotificationType1(notification);
}
@override
bool onNotificationType2(ScrollNotification notification) {
if (checkPage) {
return false;
}
return super.onNotificationType2(notification);
}
@override
void initState() {
controller = Get.putOrFind(
@@ -91,24 +65,22 @@ class _DynamicsTabPageState
@override
Widget build(BuildContext context) {
super.build(context);
return onBuild(
refreshIndicator(
onRefresh: () {
dynamicsController.queryFollowUp();
return controller.onRefresh();
},
child: CustomScrollView(
physics: const AlwaysScrollableScrollPhysics(),
controller: controller.scrollController,
slivers: [
SliverPadding(
padding: const EdgeInsets.only(bottom: 100),
sliver: buildPage(
Obx(() => _buildBody(controller.loadingState.value)),
),
return refreshIndicator(
onRefresh: () {
dynamicsController.queryFollowUp();
return controller.onRefresh();
},
child: CustomScrollView(
physics: const AlwaysScrollableScrollPhysics(),
controller: controller.scrollController,
slivers: [
SliverPadding(
padding: const EdgeInsets.only(bottom: 100),
sliver: buildPage(
Obx(() => _buildBody(controller.loadingState.value)),
),
],
),
),
],
),
);
}