diff --git a/lib/common/widgets/animated_dialog.dart b/lib/common/widgets/animated_dialog.dart index 837a47f3..548a6ea4 100644 --- a/lib/common/widgets/animated_dialog.dart +++ b/lib/common/widgets/animated_dialog.dart @@ -31,13 +31,17 @@ class AnimatedDialogState extends State opacityAnimation = Tween(begin: 0.0, end: 0.6) .animate(CurvedAnimation(parent: controller, curve: Curves.linear)); scaleAnimation = CurvedAnimation(parent: controller, curve: Curves.linear); - controller.addListener(() => setState(() {})); + controller.addListener(listener); controller.forward(); } + void listener() { + setState(() {}); + } + @override void dispose() { - controller.removeListener(() {}); + controller.removeListener(listener); controller.dispose(); super.dispose(); } diff --git a/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart b/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart index 8c5aa7b4..69c93790 100644 --- a/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart +++ b/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart @@ -127,10 +127,7 @@ class _InteractiveviewerGalleryState extends State _animationController = AnimationController( vsync: this, duration: const Duration(milliseconds: 300), - )..addListener(() { - _transformationController!.value = - _animation?.value ?? Matrix4.identity(); - }); + )..addListener(listener); if (widget.setStatusBar != false) { setStatusBar(); @@ -141,6 +138,10 @@ class _InteractiveviewerGalleryState extends State } } + void listener() { + _transformationController!.value = _animation?.value ?? Matrix4.identity(); + } + setStatusBar() async { if (Platform.isIOS || Platform.isAndroid) { await StatusBarControl.setHidden( @@ -155,7 +156,7 @@ class _InteractiveviewerGalleryState extends State widget.onClose?.call(true); _player?.dispose(); _pageController?.dispose(); - _animationController.removeListener(() {}); + _animationController.removeListener(listener); _animationController.dispose(); if (widget.setStatusBar != false) { if (Platform.isIOS || Platform.isAndroid) { diff --git a/lib/common/widgets/list_sheet.dart b/lib/common/widgets/list_sheet.dart index 9324d69a..bbf7b0b0 100644 --- a/lib/common/widgets/list_sheet.dart +++ b/lib/common/widgets/list_sheet.dart @@ -105,6 +105,10 @@ class _ListSheetContentState extends State .indexWhere((e) => e.cid == widget.currentCid) : episodes.indexWhere((e) => e.cid == widget.currentCid)); + void listener() { + _indexStream?.add(_ctr?.index); + } + @override void initState() { super.initState(); @@ -114,9 +118,7 @@ class _ListSheetContentState extends State vsync: this, length: widget.season.sections.length, initialIndex: _index, - )..addListener(() { - _indexStream?.add(_ctr?.index); - }); + )..addListener(listener); } itemScrollController = _isList ? List.generate( @@ -148,7 +150,7 @@ class _ListSheetContentState extends State _favStream = null; _indexStream?.close(); _indexStream = null; - _ctr?.removeListener(() {}); + _ctr?.removeListener(listener); _ctr?.dispose(); super.dispose(); } diff --git a/lib/pages/bangumi/view.dart b/lib/pages/bangumi/view.dart index d32dfa4d..3c529255 100644 --- a/lib/pages/bangumi/view.dart +++ b/lib/pages/bangumi/view.dart @@ -43,28 +43,28 @@ class _BangumiPageState extends State @override void initState() { super.initState(); + _bangumiController.scrollController.addListener(listener); + } + + void listener() { StreamController mainStream = Get.find().bottomBarStream; StreamController searchBarStream = Get.find().searchBarStream; - _bangumiController.scrollController.addListener( - () async { - final ScrollDirection direction = - _bangumiController.scrollController.position.userScrollDirection; - if (direction == ScrollDirection.forward) { - mainStream.add(true); - searchBarStream.add(true); - } else if (direction == ScrollDirection.reverse) { - mainStream.add(false); - searchBarStream.add(false); - } - }, - ); + final ScrollDirection direction = + _bangumiController.scrollController.position.userScrollDirection; + if (direction == ScrollDirection.forward) { + mainStream.add(true); + searchBarStream.add(true); + } else if (direction == ScrollDirection.reverse) { + mainStream.add(false); + searchBarStream.add(false); + } } @override void dispose() { - _bangumiController.scrollController.removeListener(() {}); + _bangumiController.scrollController.removeListener(listener); super.dispose(); } diff --git a/lib/pages/dynamics/detail/view.dart b/lib/pages/dynamics/detail/view.dart index ea746692..0cc8ed96 100644 --- a/lib/pages/dynamics/detail/view.dart +++ b/lib/pages/dynamics/detail/view.dart @@ -225,29 +225,29 @@ class _DynamicDetailPageState extends State // 滑动事件监听 void scrollListener() { - _dynamicDetailController.scrollController.addListener( - () { - // 标题 - if (_dynamicDetailController.scrollController.offset > 55 && - !_visibleTitle) { - _visibleTitle = true; - _titleStreamC.add(true); - } else if (_dynamicDetailController.scrollController.offset <= 55 && - _visibleTitle) { - _visibleTitle = false; - _titleStreamC.add(false); - } + _dynamicDetailController.scrollController.addListener(listener); + } - // fab按钮 - final ScrollDirection direction = _dynamicDetailController - .scrollController.position.userScrollDirection; - if (direction == ScrollDirection.forward) { - _showFab(); - } else if (direction == ScrollDirection.reverse) { - _hideFab(); - } - }, - ); + void listener() { + // 标题 + if (_dynamicDetailController.scrollController.offset > 55 && + !_visibleTitle) { + _visibleTitle = true; + _titleStreamC.add(true); + } else if (_dynamicDetailController.scrollController.offset <= 55 && + _visibleTitle) { + _visibleTitle = false; + _titleStreamC.add(false); + } + + // fab按钮 + final ScrollDirection direction = + _dynamicDetailController.scrollController.position.userScrollDirection; + if (direction == ScrollDirection.forward) { + _showFab(); + } else if (direction == ScrollDirection.reverse) { + _hideFab(); + } } void _showFab() { @@ -269,7 +269,7 @@ class _DynamicDetailPageState extends State _titleStreamC.close(); _fabAnimationCtr?.dispose(); _fabAnimationCtr = null; - _dynamicDetailController.scrollController.removeListener(() {}); + _dynamicDetailController.scrollController.removeListener(listener); super.dispose(); } diff --git a/lib/pages/dynamics/tab/view.dart b/lib/pages/dynamics/tab/view.dart index c61b96bc..58113e28 100644 --- a/lib/pages/dynamics/tab/view.dart +++ b/lib/pages/dynamics/tab/view.dart @@ -47,23 +47,7 @@ class _DynamicsTabPageState extends State ..mid = dynamicsController.mid.value, tag: widget.dynamicsType, ); - _dynamicsTabController.scrollController.addListener(() { - try { - StreamController mainStream = - Get.find().bottomBarStream; - StreamController searchBarStream = - Get.find().searchBarStream; - final ScrollDirection direction = _dynamicsTabController - .scrollController.position.userScrollDirection; - if (direction == ScrollDirection.forward) { - mainStream.add(true); - searchBarStream.add(true); - } else if (direction == ScrollDirection.reverse) { - mainStream.add(false); - searchBarStream.add(false); - } - } catch (_) {} - }); + _dynamicsTabController.scrollController.addListener(listener); if (widget.dynamicsType == 'up') { _listener = dynamicsController.mid.listen((mid) { // debugPrint('midListen: $mid'); @@ -76,10 +60,28 @@ class _DynamicsTabPageState extends State .get(SettingBoxKey.dynamicsWaterfallFlow, defaultValue: true); } + void listener() { + try { + StreamController mainStream = + Get.find().bottomBarStream; + StreamController searchBarStream = + Get.find().searchBarStream; + final ScrollDirection direction = + _dynamicsTabController.scrollController.position.userScrollDirection; + if (direction == ScrollDirection.forward) { + mainStream.add(true); + searchBarStream.add(true); + } else if (direction == ScrollDirection.reverse) { + mainStream.add(false); + searchBarStream.add(false); + } + } catch (_) {} + } + @override void dispose() { _listener?.cancel(); - _dynamicsTabController.scrollController.removeListener(() {}); + _dynamicsTabController.scrollController.removeListener(listener); dynamicsController.mid.close(); super.dispose(); } diff --git a/lib/pages/dynamics/view.dart b/lib/pages/dynamics/view.dart index bfb6b6a9..88f0753d 100644 --- a/lib/pages/dynamics/view.dart +++ b/lib/pages/dynamics/view.dart @@ -82,22 +82,22 @@ class _DynamicsPageState extends State debugPrint('upPanelPosition: $upPanelPosition'); if (GStorage.setting .get(SettingBoxKey.dynamicsShowAllFollowedUp, defaultValue: false)) { - _dynamicsController.scrollController.addListener(() { - if (_dynamicsController.scrollController.position.pixels >= - _dynamicsController.scrollController.position.maxScrollExtent - - 300) { - EasyThrottle.throttle('following', const Duration(seconds: 1), () { - _dynamicsController.queryFollowing2(); - }); - } + _dynamicsController.scrollController.addListener(listener); + } + } + + void listener() { + if (_dynamicsController.scrollController.position.pixels >= + _dynamicsController.scrollController.position.maxScrollExtent - 300) { + EasyThrottle.throttle('following', const Duration(seconds: 1), () { + _dynamicsController.queryFollowing2(); }); } } @override void dispose() { - _dynamicsController.tabController.removeListener(() {}); - _dynamicsController.scrollController.removeListener(() {}); + _dynamicsController.scrollController.removeListener(listener); super.dispose(); } diff --git a/lib/pages/fav_detail/view.dart b/lib/pages/fav_detail/view.dart index fc568c3c..e726d26e 100644 --- a/lib/pages/fav_detail/view.dart +++ b/lib/pages/fav_detail/view.dart @@ -33,20 +33,20 @@ class _FavDetailPageState extends State { void initState() { super.initState(); mediaId = Get.parameters['mediaId']!; - _favDetailController.scrollController.addListener( - () { - if (_favDetailController.scrollController.offset > 160) { - _favDetailController.titleCtr.value = true; - } else if (_favDetailController.scrollController.offset <= 160) { - _favDetailController.titleCtr.value = false; - } - }, - ); + _favDetailController.scrollController.addListener(listener); + } + + void listener() { + if (_favDetailController.scrollController.offset > 160) { + _favDetailController.titleCtr.value = true; + } else if (_favDetailController.scrollController.offset <= 160) { + _favDetailController.titleCtr.value = false; + } } @override void dispose() { - _favDetailController.scrollController.removeListener(() {}); + _favDetailController.scrollController.removeListener(listener); super.dispose(); } diff --git a/lib/pages/follow/widgets/follow_list.dart b/lib/pages/follow/widgets/follow_list.dart index 041191e6..55b652a3 100644 --- a/lib/pages/follow/widgets/follow_list.dart +++ b/lib/pages/follow/widgets/follow_list.dart @@ -27,21 +27,21 @@ class _FollowListState extends State { void initState() { super.initState(); _futureBuilderFuture = widget.ctr.queryFollowings('init'); - scrollController.addListener( - () async { - if (scrollController.position.pixels >= - scrollController.position.maxScrollExtent - 200) { - EasyThrottle.throttle('follow', const Duration(seconds: 1), () { - widget.ctr.queryFollowings('onLoad'); - }); - } - }, - ); + scrollController.addListener(listener); + } + + void listener() { + if (scrollController.position.pixels >= + scrollController.position.maxScrollExtent - 200) { + EasyThrottle.throttle('follow', const Duration(seconds: 1), () { + widget.ctr.queryFollowings('onLoad'); + }); + } } @override void dispose() { - scrollController.removeListener(() {}); + scrollController.removeListener(listener); scrollController.dispose(); super.dispose(); } diff --git a/lib/pages/follow/widgets/owner_follow_list.dart b/lib/pages/follow/widgets/owner_follow_list.dart index 6860899d..22075ec4 100644 --- a/lib/pages/follow/widgets/owner_follow_list.dart +++ b/lib/pages/follow/widgets/owner_follow_list.dart @@ -37,16 +37,16 @@ class _OwnerFollowListState extends State mid = widget.ctr.mid; tagItem = widget.tagItem!; _futureBuilderFuture = followUpGroup('init'); - scrollController.addListener( - () async { - if (scrollController.position.pixels >= - scrollController.position.maxScrollExtent - 200) { - EasyThrottle.throttle('follow', const Duration(seconds: 1), () { - followUpGroup('onLoad'); - }); - } - }, - ); + scrollController.addListener(listener); + } + + void listener() { + if (scrollController.position.pixels >= + scrollController.position.maxScrollExtent - 200) { + EasyThrottle.throttle('follow', const Duration(seconds: 1), () { + followUpGroup('onLoad'); + }); + } } // 获取分组下up @@ -70,7 +70,7 @@ class _OwnerFollowListState extends State @override void dispose() { - scrollController.removeListener(() {}); + scrollController.removeListener(listener); scrollController.dispose(); super.dispose(); } diff --git a/lib/pages/hot/view.dart b/lib/pages/hot/view.dart index 820f115f..76b1fe6a 100644 --- a/lib/pages/hot/view.dart +++ b/lib/pages/hot/view.dart @@ -33,28 +33,28 @@ class _HotPageState extends State with AutomaticKeepAliveClientMixin { @override void initState() { super.initState(); + _hotController.scrollController.addListener(listener); + } + + void listener() { StreamController mainStream = Get.find().bottomBarStream; StreamController searchBarStream = Get.find().searchBarStream; - _hotController.scrollController.addListener( - () { - final ScrollDirection direction = - _hotController.scrollController.position.userScrollDirection; - if (direction == ScrollDirection.forward) { - mainStream.add(true); - searchBarStream.add(true); - } else if (direction == ScrollDirection.reverse) { - mainStream.add(false); - searchBarStream.add(false); - } - }, - ); + final ScrollDirection direction = + _hotController.scrollController.position.userScrollDirection; + if (direction == ScrollDirection.forward) { + mainStream.add(true); + searchBarStream.add(true); + } else if (direction == ScrollDirection.reverse) { + mainStream.add(false); + searchBarStream.add(false); + } } @override void dispose() { - _hotController.scrollController.removeListener(() {}); + _hotController.scrollController.removeListener(listener); super.dispose(); } diff --git a/lib/pages/html/view.dart b/lib/pages/html/view.dart index b00a4846..d1c1df25 100644 --- a/lib/pages/html/view.dart +++ b/lib/pages/html/view.dart @@ -113,32 +113,32 @@ class _HtmlRenderPageState extends State @override void dispose() { fabAnimationCtr.dispose(); - _htmlRenderCtr.scrollController.removeListener(() {}); + _htmlRenderCtr.scrollController.removeListener(listener); super.dispose(); } void scrollListener() { - _htmlRenderCtr.scrollController.addListener( - () { - // 标题 - // if (scrollController.offset > 55 && !_visibleTitle) { - // _visibleTitle = true; - // titleStreamC.add(true); - // } else if (scrollController.offset <= 55 && _visibleTitle) { - // _visibleTitle = false; - // titleStreamC.add(false); - // } + _htmlRenderCtr.scrollController.addListener(listener); + } - // fab按钮 - final ScrollDirection direction = - _htmlRenderCtr.scrollController.position.userScrollDirection; - if (direction == ScrollDirection.forward) { - _showFab(); - } else if (direction == ScrollDirection.reverse) { - _hideFab(); - } - }, - ); + void listener() { + // 标题 + // if (scrollController.offset > 55 && !_visibleTitle) { + // _visibleTitle = true; + // titleStreamC.add(true); + // } else if (scrollController.offset <= 55 && _visibleTitle) { + // _visibleTitle = false; + // titleStreamC.add(false); + // } + + // fab按钮 + final ScrollDirection direction = + _htmlRenderCtr.scrollController.position.userScrollDirection; + if (direction == ScrollDirection.forward) { + _showFab(); + } else if (direction == ScrollDirection.reverse) { + _hideFab(); + } } void _showFab() { diff --git a/lib/pages/live/view.dart b/lib/pages/live/view.dart index eaf9ffed..b5a96fd7 100644 --- a/lib/pages/live/view.dart +++ b/lib/pages/live/view.dart @@ -37,28 +37,28 @@ class _LivePageState extends State @override void initState() { super.initState(); + _controller.scrollController.addListener(listener); + } + + void listener() { StreamController mainStream = Get.find().bottomBarStream; StreamController searchBarStream = Get.find().searchBarStream; - _controller.scrollController.addListener( - () { - final ScrollDirection direction = - _controller.scrollController.position.userScrollDirection; - if (direction == ScrollDirection.forward) { - mainStream.add(true); - searchBarStream.add(true); - } else if (direction == ScrollDirection.reverse) { - mainStream.add(false); - searchBarStream.add(false); - } - }, - ); + final ScrollDirection direction = + _controller.scrollController.position.userScrollDirection; + if (direction == ScrollDirection.forward) { + mainStream.add(true); + searchBarStream.add(true); + } else if (direction == ScrollDirection.reverse) { + mainStream.add(false); + searchBarStream.add(false); + } } @override void dispose() { - _controller.scrollController.removeListener(() {}); + _controller.scrollController.removeListener(listener); super.dispose(); } diff --git a/lib/pages/live_room/controller.dart b/lib/pages/live_room/controller.dart index bd9f7cf7..74ef5920 100644 --- a/lib/pages/live_room/controller.dart +++ b/lib/pages/live_room/controller.dart @@ -181,24 +181,27 @@ class LiveRoomController extends GetxController { } }); msgStream?.init(); - scrollController.addListener(() { - if (scrollController.position.userScrollDirection == - ScrollDirection.forward) { - disableAutoScroll.value = true; - } else if (scrollController.position.userScrollDirection == - ScrollDirection.reverse) { - final pos = scrollController.position; - if (pos.maxScrollExtent - pos.pixels <= 100) { - disableAutoScroll.value = false; - } - } - }); + scrollController.addListener(listener); } }); } + void listener() { + if (scrollController.position.userScrollDirection == + ScrollDirection.forward) { + disableAutoScroll.value = true; + } else if (scrollController.position.userScrollDirection == + ScrollDirection.reverse) { + final pos = scrollController.position; + if (pos.maxScrollExtent - pos.pixels <= 100) { + disableAutoScroll.value = false; + } + } + } + @override void onClose() { + scrollController.removeListener(listener); scrollController.dispose(); super.onClose(); } diff --git a/lib/pages/media/view.dart b/lib/pages/media/view.dart index c648932e..a8872619 100644 --- a/lib/pages/media/view.dart +++ b/lib/pages/media/view.dart @@ -28,25 +28,24 @@ class _MediaPageState extends State void initState() { super.initState(); mediaController = Get.put(MediaController()); + mediaController.scrollController.addListener(listener); + } + + void listener() { StreamController mainStream = Get.find().bottomBarStream; - - mediaController.scrollController.addListener( - () { - final ScrollDirection direction = - mediaController.scrollController.position.userScrollDirection; - if (direction == ScrollDirection.forward) { - mainStream.add(true); - } else if (direction == ScrollDirection.reverse) { - mainStream.add(false); - } - }, - ); + final ScrollDirection direction = + mediaController.scrollController.position.userScrollDirection; + if (direction == ScrollDirection.forward) { + mainStream.add(true); + } else if (direction == ScrollDirection.reverse) { + mainStream.add(false); + } } @override void dispose() { - mediaController.scrollController.removeListener(() {}); + mediaController.scrollController.removeListener(listener); super.dispose(); } diff --git a/lib/pages/member/new/member_page.dart b/lib/pages/member/new/member_page.dart index b1819169..11448e16 100644 --- a/lib/pages/member/new/member_page.dart +++ b/lib/pages/member/new/member_page.dart @@ -41,10 +41,18 @@ class _MemberPageNewState extends State MemberControllerNew(mid: _mid), tag: _heroTag, ); - _userController.scrollController.addListener(() { - _userController.scrollRatio.value = - min(1.0, _userController.scrollController.offset.round() / 120); - }); + _userController.scrollController.addListener(listener); + } + + void listener() { + _userController.scrollRatio.value = + min(1.0, _userController.scrollController.offset.round() / 120); + } + + @override + void dispose() { + _userController.scrollController.removeListener(listener); + super.dispose(); } @override diff --git a/lib/pages/member/view.dart b/lib/pages/member/view.dart index 877308f5..80ee6118 100644 --- a/lib/pages/member/view.dart +++ b/lib/pages/member/view.dart @@ -44,21 +44,21 @@ class _MemberPageState extends State _futureBuilderFuture = _memberController.getInfo(); _memberSeasonsFuture = _memberController.getMemberSeasons(); _memberCoinsFuture = _memberController.getRecentCoinVideo(); - _extendNestCtr.addListener( - () { - final double offset = _extendNestCtr.position.pixels; - if (offset > 100) { - appbarStream.add(true); - } else { - appbarStream.add(false); - } - }, - ); + _extendNestCtr.addListener(listener); + } + + void listener() { + final double offset = _extendNestCtr.position.pixels; + if (offset > 100) { + appbarStream.add(true); + } else { + appbarStream.add(false); + } } @override void dispose() { - _extendNestCtr.removeListener(() {}); + _extendNestCtr.removeListener(listener); _extendNestCtr.dispose(); appbarStream.close(); super.dispose(); diff --git a/lib/pages/member_archive/view.dart b/lib/pages/member_archive/view.dart index 203d8295..a1fcb881 100644 --- a/lib/pages/member_archive/view.dart +++ b/lib/pages/member_archive/view.dart @@ -22,7 +22,7 @@ class _MemberArchivePageState extends State { @override void dispose() { - _memberArchivesController.scrollController.removeListener(() {}); + _memberArchivesController.scrollController.removeListener(listener); super.dispose(); } @@ -34,19 +34,18 @@ class _MemberArchivePageState extends State { _memberArchivesController = Get.put(MemberArchiveController(), tag: heroTag); _futureBuilderFuture = _memberArchivesController.getMemberArchive('init'); - _memberArchivesController.scrollController.addListener( - () { - if (_memberArchivesController.scrollController.position.pixels >= - _memberArchivesController - .scrollController.position.maxScrollExtent - - 200) { - EasyThrottle.throttle( - 'member_archives', const Duration(milliseconds: 500), () { - _memberArchivesController.onLoad(); - }); - } - }, - ); + _memberArchivesController.scrollController.addListener(listener); + } + + void listener() { + if (_memberArchivesController.scrollController.position.pixels >= + _memberArchivesController.scrollController.position.maxScrollExtent - + 200) { + EasyThrottle.throttle( + 'member_archives', const Duration(milliseconds: 500), () { + _memberArchivesController.onLoad(); + }); + } } @override diff --git a/lib/pages/member_seasons/view.dart b/lib/pages/member_seasons/view.dart index cdebebd3..9b0407ee 100644 --- a/lib/pages/member_seasons/view.dart +++ b/lib/pages/member_seasons/view.dart @@ -21,7 +21,7 @@ class _MemberSeasonsPageState extends State { @override void dispose() { - _memberSeasonsController.scrollController.removeListener(() {}); + _memberSeasonsController.scrollController.removeListener(listener); super.dispose(); } @@ -30,18 +30,18 @@ class _MemberSeasonsPageState extends State { super.initState(); _futureBuilderFuture = _memberSeasonsController.getSeasonDetail('onRefresh'); - _memberSeasonsController.scrollController.addListener( - () { - if (_memberSeasonsController.scrollController.position.pixels >= - _memberSeasonsController.scrollController.position.maxScrollExtent - - 200) { - EasyThrottle.throttle( - 'member_archives', const Duration(milliseconds: 500), () { - _memberSeasonsController.onLoad(); - }); - } - }, - ); + _memberSeasonsController.scrollController.addListener(listener); + } + + void listener() { + if (_memberSeasonsController.scrollController.position.pixels >= + _memberSeasonsController.scrollController.position.maxScrollExtent - + 200) { + EasyThrottle.throttle( + 'member_archives', const Duration(milliseconds: 500), () { + _memberSeasonsController.onLoad(); + }); + } } @override diff --git a/lib/pages/rank/controller.dart b/lib/pages/rank/controller.dart index d5de3f25..a8b92ae8 100644 --- a/lib/pages/rank/controller.dart +++ b/lib/pages/rank/controller.dart @@ -44,22 +44,6 @@ class RankController extends GetxController with GetTickerProviderStateMixin { length: tabs.length, vsync: this, ); - // 监听 tabController 切换 - // if (enableGradientBg) { - // tabController.animation!.addListener(() { - // if (tabController.indexIsChanging) { - // if (initialIndex.value != tabController.index) { - // initialIndex.value = tabController.index; - // } - // } else { - // final int temp = tabController.animation!.value.round(); - // if (initialIndex.value != temp) { - // initialIndex.value = temp; - // tabController.index = initialIndex.value; - // } - // } - // }); - // } } @override diff --git a/lib/pages/rank/zone/view.dart b/lib/pages/rank/zone/view.dart index 0672cd4c..5b52a200 100644 --- a/lib/pages/rank/zone/view.dart +++ b/lib/pages/rank/zone/view.dart @@ -36,28 +36,28 @@ class _ZonePageState extends State super.initState(); _zoneController = Get.put(ZoneController(zoneID: widget.rid), tag: widget.rid.toString()); + _zoneController.scrollController.addListener(listener); + } + + void listener() { StreamController mainStream = Get.find().bottomBarStream; StreamController searchBarStream = Get.find().searchBarStream; - _zoneController.scrollController.addListener( - () { - final ScrollDirection direction = - _zoneController.scrollController.position.userScrollDirection; - if (direction == ScrollDirection.forward) { - mainStream.add(true); - searchBarStream.add(true); - } else if (direction == ScrollDirection.reverse) { - mainStream.add(false); - searchBarStream.add(false); - } - }, - ); + final ScrollDirection direction = + _zoneController.scrollController.position.userScrollDirection; + if (direction == ScrollDirection.forward) { + mainStream.add(true); + searchBarStream.add(true); + } else if (direction == ScrollDirection.reverse) { + mainStream.add(false); + searchBarStream.add(false); + } } @override void dispose() { - _zoneController.scrollController.removeListener(() {}); + _zoneController.scrollController.removeListener(listener); super.dispose(); } diff --git a/lib/pages/rcmd/view.dart b/lib/pages/rcmd/view.dart index 182ef65d..0eca275a 100644 --- a/lib/pages/rcmd/view.dart +++ b/lib/pages/rcmd/view.dart @@ -32,28 +32,28 @@ class _RcmdPageState extends State @override void initState() { super.initState(); + _controller.scrollController.addListener(listener); + } + + void listener() { StreamController mainStream = Get.find().bottomBarStream; StreamController searchBarStream = Get.find().searchBarStream; - _controller.scrollController.addListener( - () { - final ScrollDirection direction = - _controller.scrollController.position.userScrollDirection; - if (direction == ScrollDirection.forward) { - mainStream.add(true); - searchBarStream.add(true); - } else if (direction == ScrollDirection.reverse) { - mainStream.add(false); - searchBarStream.add(false); - } - }, - ); + final ScrollDirection direction = + _controller.scrollController.position.userScrollDirection; + if (direction == ScrollDirection.forward) { + mainStream.add(true); + searchBarStream.add(true); + } else if (direction == ScrollDirection.reverse) { + mainStream.add(false); + searchBarStream.add(false); + } } @override void dispose() { - _controller.scrollController.removeListener(() {}); + _controller.scrollController.removeListener(listener); super.dispose(); } diff --git a/lib/pages/search_result/view.dart b/lib/pages/search_result/view.dart index 8556bede..5b58e6db 100644 --- a/lib/pages/search_result/view.dart +++ b/lib/pages/search_result/view.dart @@ -35,17 +35,19 @@ class _SearchResultPageState extends State ); if (Get.arguments is int) { - _tabController.addListener(() { - if (Get.isRegistered()) { - Get.find().initIndex = _tabController.index; - } - }); + _tabController.addListener(listener); + } + } + + void listener() { + if (Get.isRegistered()) { + Get.find().initIndex = _tabController.index; } } @override void dispose() { - _tabController.removeListener(() {}); + _tabController.removeListener(listener); _tabController.dispose(); super.dispose(); } diff --git a/lib/pages/setting/pages/display_mode.dart b/lib/pages/setting/pages/display_mode.dart index 35c3be61..4dd259ee 100644 --- a/lib/pages/setting/pages/display_mode.dart +++ b/lib/pages/setting/pages/display_mode.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:flutter/services.dart'; @@ -21,9 +22,12 @@ class _SetDisplayModeState extends State { final ValueNotifier page = ValueNotifier(0); late final PageController controller = PageController() - ..addListener(() { - page.value = controller.page!.round(); - }); + ..addListener(listener); + + void listener() { + page.value = controller.page!.round(); + } + @override void initState() { super.initState(); @@ -35,7 +39,7 @@ class _SetDisplayModeState extends State { @override void dispose() { - controller.removeListener(() {}); + controller.removeListener(listener); controller.dispose(); super.dispose(); } diff --git a/lib/pages/subscription_detail/view.dart b/lib/pages/subscription_detail/view.dart index 0fa07c43..a181115b 100644 --- a/lib/pages/subscription_detail/view.dart +++ b/lib/pages/subscription_detail/view.dart @@ -35,28 +35,28 @@ class _SubDetailPageState extends State { id = Get.parameters['id']!; _futureBuilderFuture = _subDetailController.queryUserSubFolderDetail(); titleStreamC = StreamController(); - _controller.addListener( - () { - if (_controller.offset > 160) { - titleStreamC.add(true); - } else if (_controller.offset <= 160) { - titleStreamC.add(false); - } + _controller.addListener(listener); + } - if (_controller.position.pixels >= - _controller.position.maxScrollExtent - 200) { - EasyThrottle.throttle('subDetail', const Duration(seconds: 1), () { - _subDetailController.onLoad(); - }); - } - }, - ); + void listener() { + if (_controller.offset > 160) { + titleStreamC.add(true); + } else if (_controller.offset <= 160) { + titleStreamC.add(false); + } + + if (_controller.position.pixels >= + _controller.position.maxScrollExtent - 200) { + EasyThrottle.throttle('subDetail', const Duration(seconds: 1), () { + _subDetailController.onLoad(); + }); + } } @override void dispose() { titleStreamC.close(); - _controller.removeListener(() {}); + _controller.removeListener(listener); _controller.dispose(); super.dispose(); } diff --git a/lib/pages/video/detail/introduction/widgets/action_item.dart b/lib/pages/video/detail/introduction/widgets/action_item.dart index 786cbf2e..a22d2805 100644 --- a/lib/pages/video/detail/introduction/widgets/action_item.dart +++ b/lib/pages/video/detail/introduction/widgets/action_item.dart @@ -82,20 +82,22 @@ class ActionItemState extends State with TickerProviderStateMixin { ); _animation = Tween(begin: 0, end: -2 * pi).animate(controller!) - ..addListener(() { - setState(() { - _hideCircle = _animation?.value == -2 * pi; - if (_hideCircle) { - controller?.reset(); - if (_isThumbUp) { - widget.onLongPress?.call(); - } - } - }); - }); + ..addListener(listener); } } + void listener() { + setState(() { + _hideCircle = _animation?.value == -2 * pi; + if (_hideCircle) { + controller?.reset(); + if (_isThumbUp) { + widget.onLongPress?.call(); + } + } + }); + } + void cancelTimer() { _timer?.cancel(); _timer = null; @@ -104,7 +106,7 @@ class ActionItemState extends State with TickerProviderStateMixin { @override void dispose() { cancelTimer(); - _animation?.removeListener(() {}); + _animation?.removeListener(listener); controller?.dispose(); super.dispose(); } diff --git a/lib/pages/video/detail/reply/view.dart b/lib/pages/video/detail/reply/view.dart index c229cb20..4ba0f962 100644 --- a/lib/pages/video/detail/reply/view.dart +++ b/lib/pages/video/detail/reply/view.dart @@ -75,27 +75,27 @@ class _VideoReplyPanelState extends State @override void dispose() { - _videoReplyController.scrollController.removeListener(() {}); + _videoReplyController.scrollController.removeListener(listener); fabAnimationCtr.dispose(); super.dispose(); } void scrollListener() { - _videoReplyController.scrollController.addListener( - () { - final ScrollDirection direction = - _videoReplyController.scrollController.position.userScrollDirection; - if (direction == ScrollDirection.forward) { - if (mounted) { - _showFab(); - } - } else if (direction == ScrollDirection.reverse) { - if (mounted) { - _hideFab(); - } - } - }, - ); + _videoReplyController.scrollController.addListener(listener); + } + + void listener() { + final ScrollDirection direction = + _videoReplyController.scrollController.position.userScrollDirection; + if (direction == ScrollDirection.forward) { + if (mounted) { + _showFab(); + } + } else if (direction == ScrollDirection.reverse) { + if (mounted) { + _hideFab(); + } + } } void _showFab() { diff --git a/lib/pages/video/detail/reply_new/view.dart b/lib/pages/video/detail/reply_new/view.dart index 0541df13..b2d0d1ed 100644 --- a/lib/pages/video/detail/reply_new/view.dart +++ b/lib/pages/video/detail/reply_new/view.dart @@ -60,19 +60,21 @@ class _VideoReplyNewDialogState extends State _autoFocus() async { await Future.delayed(const Duration(milliseconds: 300)); - if (context.mounted) { + if (mounted) { FocusScope.of(context).requestFocus(replyContentFocusNode); } } _focusListener() { - replyContentFocusNode.addListener(() { - if (replyContentFocusNode.hasFocus) { - setState(() { - toolbarType = 'input'; - }); - } - }); + replyContentFocusNode.addListener(listener); + } + + void listener() { + if (replyContentFocusNode.hasFocus) { + setState(() { + toolbarType = 'input'; + }); + } } Future submitReplyAdd() async { @@ -140,7 +142,7 @@ class _VideoReplyNewDialogState extends State _publishStream.close(); WidgetsBinding.instance.removeObserver(this); _replyContentController.dispose(); - replyContentFocusNode.removeListener(() {}); + replyContentFocusNode.removeListener(listener); replyContentFocusNode.dispose(); super.dispose(); } diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index 2adb6f47..52498759 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -1193,11 +1193,13 @@ class _PLVideoPlayerState extends State CurveTween(curve: Curves.easeOut) .animate(animController), ); - animController.addListener(() { + void listener() { transformationController.value = anim.value; - }); + } + + animController.addListener(listener); await animController.forward(from: 0); - animController.removeListener(() {}); + animController.removeListener(listener); animController.dispose(); }, child: Text('还原屏幕'),