reduce rebuild

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-03-17 14:38:10 +08:00
parent 8a8aa6c1e0
commit d6579b29ae
23 changed files with 254 additions and 214 deletions

View File

@@ -6,10 +6,12 @@ import 'package:PiliPlus/common/constants.dart';
import 'package:PiliPlus/common/widgets/button/icon_button.dart';
import 'package:PiliPlus/common/widgets/custom_icon.dart';
import 'package:PiliPlus/common/widgets/flutter/page/page_view.dart';
import 'package:PiliPlus/common/widgets/flutter/pop_scope.dart';
import 'package:PiliPlus/common/widgets/flutter/text_field/controller.dart';
import 'package:PiliPlus/common/widgets/gesture/horizontal_drag_gesture_recognizer.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart';
import 'package:PiliPlus/common/widgets/route_aware_mixin.dart';
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
import 'package:PiliPlus/models/common/image_type.dart';
import 'package:PiliPlus/models/common/live/live_contribution_rank_type.dart';
@@ -56,7 +58,7 @@ class LiveRoomPage extends StatefulWidget {
}
class _LiveRoomPageState extends State<LiveRoomPage>
with WidgetsBindingObserver, RouteAware {
with WidgetsBindingObserver, RouteAware, RouteAwareMixin {
final String heroTag = Utils.generateRandomString(6);
late final LiveRoomController _liveRoomController;
late final PlPlayerController plPlayerController;
@@ -83,10 +85,6 @@ class _LiveRoomPageState extends State<LiveRoomPage>
@override
void didChangeDependencies() {
super.didChangeDependencies();
PageUtils.routeObserver.subscribe(
this,
ModalRoute.of(context)! as PageRoute,
);
padding = MediaQuery.viewPaddingOf(context);
final size = MediaQuery.sizeOf(context);
maxWidth = size.width;
@@ -159,7 +157,6 @@ class _LiveRoomPageState extends State<LiveRoomPage>
plPlayerController
..removeStatusLister(playerListener)
..dispose();
PageUtils.routeObserver.unsubscribe(this);
for (final e in LiveContributionRankType.values) {
Get.delete<ContributionRankController>(
tag: '${_liveRoomController.roomId}${e.name}',
@@ -352,7 +349,7 @@ class _LiveRoomPageState extends State<LiveRoomPage>
],
);
}
return PopScope(
return popScope(
canPop: !isFullScreen && !plPlayerController.isDesktopPip,
onPopInvokedWithResult: plPlayerController.onPopInvokedWithResult,
child: player,
@@ -731,7 +728,7 @@ class _LiveRoomPageState extends State<LiveRoomPage>
horizontalDragGestureRecognizer:
CustomHorizontalDragGestureRecognizer.new,
children: [
KeepAliveWrapper(builder: (context) => chat()),
KeepAliveWrapper(child: chat()),
SuperChatPanel(
key: scKey,
controller: _liveRoomController,