mod: close listener on dispose

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-12-25 14:40:47 +08:00
parent 169ae7d562
commit 6acba93c2c
13 changed files with 194 additions and 129 deletions

View File

@@ -1,3 +1,5 @@
import 'dart:async';
import 'package:PiliPalaX/common/widgets/self_sized_horizontal_list.dart';
import 'package:PiliPalaX/pages/search/widgets/search_text.dart';
import 'package:PiliPalaX/utils/extension.dart';
@@ -50,7 +52,7 @@ class _VideoIntroPanelState extends State<VideoIntroPanel>
late String heroTag;
late VideoIntroController videoIntroController;
VideoDetailData? videoDetail;
// late Future? _futureBuilderFuture;
StreamSubscription? _listener;
// 添加页面缓存
@override
@@ -68,11 +70,17 @@ class _VideoIntroPanelState extends State<VideoIntroPanel>
videoIntroController = Get.put(VideoIntroController(), tag: heroTag)
..heroTag = heroTag;
// _futureBuilderFuture = videoIntroController.queryVideoIntro();
videoIntroController.videoDetail.listen((value) {
_listener = videoIntroController.videoDetail.listen((value) {
videoDetail = value;
});
}
@override
void dispose() {
_listener?.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
super.build(context);

View File

@@ -1,3 +1,4 @@
import 'dart:async';
import 'dart:math';
import 'package:flutter/material.dart';
@@ -35,6 +36,7 @@ class _PagesPanelState extends State<PagesPanel> {
late final String heroTag;
late VideoDetailController _videoDetailController;
final ScrollController _scrollController = ScrollController();
StreamSubscription? _listener;
@override
void initState() {
@@ -43,7 +45,7 @@ class _PagesPanelState extends State<PagesPanel> {
heroTag = widget.heroTag;
_videoDetailController = Get.find<VideoDetailController>(tag: heroTag);
pageIndex = widget.pages.indexWhere((Part e) => e.cid == cid);
_videoDetailController.cid.listen((int p0) {
_listener = _videoDetailController.cid.listen((int p0) {
cid = p0;
pageIndex = max(0, widget.pages.indexWhere((Part e) => e.cid == cid));
if (!mounted) return;
@@ -61,6 +63,7 @@ class _PagesPanelState extends State<PagesPanel> {
@override
void dispose() {
_listener?.cancel();
_scrollController.dispose();
super.dispose();
}