From 9223f40f6d8ee0c02b201f93116ae0fb00a1733e Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Tue, 24 Dec 2024 13:57:21 +0800 Subject: [PATCH] opt: expand ctr Signed-off-by: bggRGjQaUbCoE --- .../video/detail/introduction/controller.dart | 5 +++ lib/pages/video/detail/introduction/view.dart | 43 +++++++------------ 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/lib/pages/video/detail/introduction/controller.dart b/lib/pages/video/detail/introduction/controller.dart index d1075179..11df7bd9 100644 --- a/lib/pages/video/detail/introduction/controller.dart +++ b/lib/pages/video/detail/introduction/controller.dart @@ -3,6 +3,7 @@ import 'dart:math'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/utils/utils.dart'; +import 'package:expandable/expandable.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -79,6 +80,8 @@ class VideoIntroController extends GetxController Rx> queryVideoIntroData = Rx>({"status": true}); + ExpandableController? expandableCtr; + @override void onInit() { super.onInit(); @@ -609,6 +612,8 @@ class VideoIntroController extends GetxController @override void onClose() { canelTimer(); + expandableCtr?.dispose(); + expandableCtr = null; super.onClose(); } diff --git a/lib/pages/video/detail/introduction/view.dart b/lib/pages/video/detail/introduction/view.dart index 0acb68cd..78d045cb 100644 --- a/lib/pages/video/detail/introduction/view.dart +++ b/lib/pages/video/detail/introduction/view.dart @@ -73,12 +73,6 @@ class _VideoIntroPanelState extends State }); } - @override - void dispose() { - videoIntroController.onClose(); - super.dispose(); - } - @override Widget build(BuildContext context) { super.build(context); @@ -158,7 +152,6 @@ class _VideoInfoState extends State with TickerProviderStateMixin { late final _coinKey = GlobalKey(); late final _favKey = GlobalKey(); - late final ExpandableController _expandableCtr; @override void initState() { @@ -171,28 +164,24 @@ class _VideoInfoState extends State with TickerProviderStateMixin { loadingStatus = widget.loadingStatus; enableAi = setting.get(SettingBoxKey.enableAi, defaultValue: true); - bool alwaysExapndIntroPanel = GStorage.alwaysExapndIntroPanel; + if (videoIntroController.expandableCtr == null) { + bool alwaysExapndIntroPanel = GStorage.alwaysExapndIntroPanel; - _expandableCtr = ExpandableController( - initialExpanded: alwaysExapndIntroPanel, - ); + videoIntroController.expandableCtr = ExpandableController( + initialExpanded: alwaysExapndIntroPanel, + ); - if (alwaysExapndIntroPanel.not && GStorage.exapndIntroPanelH) { - WidgetsBinding.instance.addPostFrameCallback((_) { - if (context.orientation == Orientation.landscape && - _expandableCtr.expanded.not) { - _expandableCtr.toggle(); - } - }); + if (alwaysExapndIntroPanel.not && GStorage.exapndIntroPanelH) { + WidgetsBinding.instance.addPostFrameCallback((_) { + if (context.orientation == Orientation.landscape && + videoIntroController.expandableCtr?.expanded == false) { + videoIntroController.expandableCtr?.toggle(); + } + }); + } } } - @override - void dispose() { - _expandableCtr.dispose(); - super.dispose(); - } - void _showFavBottomSheet() => showModalBottomSheet( context: context, useSafeArea: true, @@ -249,7 +238,7 @@ class _VideoInfoState extends State with TickerProviderStateMixin { } feedBack(); // widget.showIntroDetail(); - _expandableCtr.toggle(); + videoIntroController.expandableCtr?.toggle(); } // 用户主页 @@ -412,7 +401,7 @@ class _VideoInfoState extends State with TickerProviderStateMixin { behavior: HitTestBehavior.translucent, onTap: showIntroDetail, child: ExpandablePanel( - controller: _expandableCtr, + controller: videoIntroController.expandableCtr, collapsed: GestureDetector( onLongPress: () { feedBack(); @@ -540,7 +529,7 @@ class _VideoInfoState extends State with TickerProviderStateMixin { behavior: HitTestBehavior.translucent, onTap: showIntroDetail, child: ExpandablePanel( - controller: _expandableCtr, + controller: videoIntroController.expandableCtr, collapsed: const SizedBox.shrink(), expanded: Column( mainAxisSize: MainAxisSize.min,