From 8627869309e172d57cd14849b170159f3db86e61 Mon Sep 17 00:00:00 2001 From: guozhigq Date: Sun, 20 Aug 2023 09:12:31 +0800 Subject: [PATCH] =?UTF-8?q?mod:=20=E6=8E=A7=E5=88=B6=E5=99=A8=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E4=BA=8B=E4=BB=B6=E7=A7=BB=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/bangumi/view.dart | 10 +++++++++- lib/pages/blacklist/index.dart | 1 + lib/pages/dynamics/deatil/view.dart | 6 ++++++ lib/pages/dynamics/view.dart | 9 ++++++++- lib/pages/fan/view.dart | 6 ++++++ lib/pages/follow/view.dart | 6 ++++++ lib/pages/history/view.dart | 21 +++++++++++++++------ lib/pages/hot/view.dart | 9 ++++++++- lib/pages/live/view.dart | 9 ++++++++- lib/pages/member/view.dart | 6 ++++++ lib/pages/rcmd/view.dart | 9 ++++++++- lib/pages/searchPanel/view.dart | 18 ++++++++++++------ lib/pages/video/detail/reply/view.dart | 13 +++++++------ lib/pages/video/detail/replyReply/view.dart | 12 ++++++------ lib/plugin/pl_player/view.dart | 1 + lib/utils/storage.dart | 9 +++++++-- 16 files changed, 114 insertions(+), 31 deletions(-) diff --git a/lib/pages/bangumi/view.dart b/lib/pages/bangumi/view.dart index 307fc5af..a5ea84c0 100644 --- a/lib/pages/bangumi/view.dart +++ b/lib/pages/bangumi/view.dart @@ -23,13 +23,15 @@ class _BangumiPageState extends State with AutomaticKeepAliveClientMixin { final BangumiController _bangumidController = Get.put(BangumiController()); late Future? _futureBuilderFuture; + late ScrollController scrollController; + @override bool get wantKeepAlive => true; @override void initState() { super.initState(); - ScrollController scrollController = _bangumidController.scrollController; + scrollController = _bangumidController.scrollController; StreamController mainStream = Get.find().bottomBarStream; _futureBuilderFuture = _bangumidController.queryBangumiListFeed(); @@ -54,6 +56,12 @@ class _BangumiPageState extends State ); } + @override + void dispose() { + scrollController.removeListener(() {}); + super.dispose(); + } + @override Widget build(BuildContext context) { super.build(context); diff --git a/lib/pages/blacklist/index.dart b/lib/pages/blacklist/index.dart index 27aa770f..63792532 100644 --- a/lib/pages/blacklist/index.dart +++ b/lib/pages/blacklist/index.dart @@ -46,6 +46,7 @@ class _BlackListPageState extends State { List blackMidsList = _blackListController.blackList.map((e) => e.mid!).toList(); setting.put(SettingBoxKey.blackMidsList, blackMidsList); + scrollController.removeListener(() {}); super.dispose(); } diff --git a/lib/pages/dynamics/deatil/view.dart b/lib/pages/dynamics/deatil/view.dart index 129494c9..1d36f856 100644 --- a/lib/pages/dynamics/deatil/view.dart +++ b/lib/pages/dynamics/deatil/view.dart @@ -95,6 +95,12 @@ class _DynamicDetailPageState extends State { ); } + @override + void dispose() { + scrollController.removeListener(() {}); + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold( diff --git a/lib/pages/dynamics/view.dart b/lib/pages/dynamics/view.dart index 4f6b6a40..c7d518c6 100644 --- a/lib/pages/dynamics/view.dart +++ b/lib/pages/dynamics/view.dart @@ -32,6 +32,7 @@ class _DynamicsPageState extends State bool _isLoadingMore = false; Box user = GStrorage.user; EventBus eventBus = EventBus(); + late ScrollController scrollController; @override bool get wantKeepAlive => true; @@ -41,7 +42,7 @@ class _DynamicsPageState extends State super.initState(); _futureBuilderFuture = _dynamicsController.queryFollowDynamic(); _futureBuilderFutureUp = _dynamicsController.queryFollowUp(); - ScrollController scrollController = _dynamicsController.scrollController; + scrollController = _dynamicsController.scrollController; StreamController mainStream = Get.find().bottomBarStream; scrollController.addListener( @@ -74,6 +75,12 @@ class _DynamicsPageState extends State }); } + @override + void dispose() { + scrollController.removeListener(() {}); + super.dispose(); + } + @override Widget build(BuildContext context) { super.build(context); diff --git a/lib/pages/fan/view.dart b/lib/pages/fan/view.dart index e17d87d2..a0b42528 100644 --- a/lib/pages/fan/view.dart +++ b/lib/pages/fan/view.dart @@ -37,6 +37,12 @@ class _FansPageState extends State { ); } + @override + void dispose() { + scrollController.removeListener(() {}); + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold( diff --git a/lib/pages/follow/view.dart b/lib/pages/follow/view.dart index ec46c0c5..d2a4b423 100644 --- a/lib/pages/follow/view.dart +++ b/lib/pages/follow/view.dart @@ -37,6 +37,12 @@ class _FollowPageState extends State { ); } + @override + void dispose() { + scrollController.removeListener(() {}); + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold( diff --git a/lib/pages/history/view.dart b/lib/pages/history/view.dart index b0e068da..5791e45c 100644 --- a/lib/pages/history/view.dart +++ b/lib/pages/history/view.dart @@ -1,3 +1,4 @@ +import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:pilipala/common/skeleton/video_card_h.dart'; @@ -17,25 +18,33 @@ class HistoryPage extends StatefulWidget { class _HistoryPageState extends State { final HistoryController _historyController = Get.put(HistoryController()); Future? _futureBuilderFuture; + late ScrollController scrollController; @override void initState() { _futureBuilderFuture = _historyController.queryHistoryList(); super.initState(); - - _historyController.scrollController.addListener( + scrollController = _historyController.scrollController; + scrollController.addListener( () { - if (_historyController.scrollController.position.pixels >= - _historyController.scrollController.position.maxScrollExtent - - 300) { + if (scrollController.position.pixels >= + scrollController.position.maxScrollExtent - 300) { if (!_historyController.isLoadingMore.value) { - _historyController.onLoad(); + EasyThrottle.throttle('history', const Duration(seconds: 1), () { + _historyController.onLoad(); + }); } } }, ); } + @override + void dispose() { + scrollController.removeListener(() {}); + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold( diff --git a/lib/pages/hot/view.dart b/lib/pages/hot/view.dart index 191ebc0e..16ee4348 100644 --- a/lib/pages/hot/view.dart +++ b/lib/pages/hot/view.dart @@ -23,6 +23,7 @@ class _HotPageState extends State with AutomaticKeepAliveClientMixin { final HotController _hotController = Get.put(HotController()); List videoList = []; Future? _futureBuilderFuture; + late ScrollController scrollController; @override bool get wantKeepAlive => true; @@ -31,7 +32,7 @@ class _HotPageState extends State with AutomaticKeepAliveClientMixin { void initState() { super.initState(); _futureBuilderFuture = _hotController.queryHotFeed('init'); - ScrollController scrollController = _hotController.scrollController; + scrollController = _hotController.scrollController; StreamController mainStream = Get.find().bottomBarStream; scrollController.addListener( @@ -55,6 +56,12 @@ class _HotPageState extends State with AutomaticKeepAliveClientMixin { ); } + @override + void dispose() { + scrollController.removeListener(() {}); + super.dispose(); + } + @override Widget build(BuildContext context) { super.build(context); diff --git a/lib/pages/live/view.dart b/lib/pages/live/view.dart index e76f3084..385d3272 100644 --- a/lib/pages/live/view.dart +++ b/lib/pages/live/view.dart @@ -24,12 +24,13 @@ class LivePage extends StatefulWidget { class _LivePageState extends State { final LiveController _liveController = Get.put(LiveController()); late Future _futureBuilderFuture; + late ScrollController scrollController; @override void initState() { super.initState(); _futureBuilderFuture = _liveController.queryLiveList('init'); - ScrollController scrollController = _liveController.scrollController; + scrollController = _liveController.scrollController; StreamController mainStream = Get.find().bottomBarStream; scrollController.addListener( @@ -53,6 +54,12 @@ class _LivePageState extends State { ); } + @override + void dispose() { + scrollController.removeListener(() {}); + super.dispose(); + } + @override Widget build(BuildContext context) { return Container( diff --git a/lib/pages/member/view.dart b/lib/pages/member/view.dart index 9bf4725c..55dad4f0 100644 --- a/lib/pages/member/view.dart +++ b/lib/pages/member/view.dart @@ -43,6 +43,12 @@ class _MemberPageState extends State ); } + @override + void dispose() { + _extendNestCtr.removeListener(() {}); + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold( diff --git a/lib/pages/rcmd/view.dart b/lib/pages/rcmd/view.dart index b49057ba..d8d7c57a 100644 --- a/lib/pages/rcmd/view.dart +++ b/lib/pages/rcmd/view.dart @@ -41,7 +41,8 @@ class _RcmdPageState extends State () { if (scrollController.position.pixels >= scrollController.position.maxScrollExtent - 200) { - EasyThrottle.throttle('my-throttler', const Duration(seconds: 1), () { + EasyThrottle.throttle( + 'my-throttler', const Duration(milliseconds: 500), () { _rcmdController.isLoadingMore = true; _rcmdController.onLoad(); }); @@ -58,6 +59,12 @@ class _RcmdPageState extends State ); } + @override + void dispose() { + _rcmdController.scrollController.removeListener(() {}); + super.dispose(); + } + @override Widget build(BuildContext context) { super.build(context); diff --git a/lib/pages/searchPanel/view.dart b/lib/pages/searchPanel/view.dart index 8e1cf3c4..23f9dd73 100644 --- a/lib/pages/searchPanel/view.dart +++ b/lib/pages/searchPanel/view.dart @@ -1,3 +1,4 @@ +import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:pilipala/common/skeleton/media_bangumi.dart'; @@ -29,6 +30,7 @@ class _SearchPanelState extends State bool _isLoadingMore = false; late Future _futureBuilderFuture; + late ScrollController scrollController; @override bool get wantKeepAlive => true; @@ -43,20 +45,24 @@ class _SearchPanelState extends State ), tag: widget.searchType!.type, ); - ScrollController scrollController = _searchPanelController.scrollController; + scrollController = _searchPanelController.scrollController; scrollController.addListener(() async { if (scrollController.position.pixels >= scrollController.position.maxScrollExtent - 100) { - if (!_isLoadingMore) { - _isLoadingMore = true; - await _searchPanelController.onSearch(type: 'onLoad'); - _isLoadingMore = false; - } + EasyThrottle.throttle('history', const Duration(seconds: 1), () { + _searchPanelController.onSearch(type: 'onLoad'); + }); } }); _futureBuilderFuture = _searchPanelController.onSearch(); } + @override + void dispose() { + scrollController.removeListener(() {}); + super.dispose(); + } + @override Widget build(BuildContext context) { super.build(context); diff --git a/lib/pages/video/detail/reply/view.dart b/lib/pages/video/detail/reply/view.dart index f17bb819..149a2f30 100644 --- a/lib/pages/video/detail/reply/view.dart +++ b/lib/pages/video/detail/reply/view.dart @@ -34,6 +34,7 @@ class _VideoReplyPanelState extends State with AutomaticKeepAliveClientMixin, TickerProviderStateMixin { late VideoReplyController _videoReplyController; late AnimationController fabAnimationCtr; + late ScrollController scrollController; Future? _futureBuilderFuture; bool _isFabVisible = true; @@ -61,18 +62,18 @@ class _VideoReplyPanelState extends State vsync: this, duration: const Duration(milliseconds: 300)); _futureBuilderFuture = _videoReplyController.queryReplyList(); - _videoReplyController.scrollController.addListener( + scrollController = _videoReplyController.scrollController; + scrollController.addListener( () { - if (_videoReplyController.scrollController.position.pixels >= - _videoReplyController.scrollController.position.maxScrollExtent - - 300) { + if (scrollController.position.pixels >= + scrollController.position.maxScrollExtent - 300) { EasyThrottle.throttle('replylist', const Duration(seconds: 2), () { _videoReplyController.onLoad(); }); } final ScrollDirection direction = - _videoReplyController.scrollController.position.userScrollDirection; + scrollController.position.userScrollDirection; if (direction == ScrollDirection.forward) { _showFab(); } else if (direction == ScrollDirection.reverse) { @@ -113,7 +114,7 @@ class _VideoReplyPanelState extends State void dispose() { super.dispose(); fabAnimationCtr.dispose(); - _videoReplyController.scrollController.dispose(); + scrollController.dispose(); } @override diff --git a/lib/pages/video/detail/replyReply/view.dart b/lib/pages/video/detail/replyReply/view.dart index bad46268..b457063a 100644 --- a/lib/pages/video/detail/replyReply/view.dart +++ b/lib/pages/video/detail/replyReply/view.dart @@ -38,6 +38,7 @@ class _VideoReplyReplyPanelState extends State { Box localCache = GStrorage.localCache; late double sheetHeight; Future? _futureBuilderFuture; + late ScrollController scrollController; @override void initState() { @@ -48,12 +49,11 @@ class _VideoReplyReplyPanelState extends State { super.initState(); // 上拉加载更多 - _videoReplyReplyController.scrollController.addListener( + scrollController = _videoReplyReplyController.scrollController; + scrollController.addListener( () { - if (_videoReplyReplyController.scrollController.position.pixels >= - _videoReplyReplyController - .scrollController.position.maxScrollExtent - - 300) { + if (scrollController.position.pixels >= + scrollController.position.maxScrollExtent - 300) { if (!_videoReplyReplyController.isLoadingMore) { _videoReplyReplyController.onLoad(); } @@ -69,7 +69,7 @@ class _VideoReplyReplyPanelState extends State { @override void dispose() { - // _videoReplyReplyController.scrollController.dispose(); + scrollController.dispose(); super.dispose(); } diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index 7789de62..170d9614 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -229,6 +229,7 @@ class _PLVideoPlayerState extends State @override void dispose() { animationController.dispose(); + FlutterVolumeController.removeListener(); super.dispose(); } diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index 9c45deb7..4901691e 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -22,12 +22,17 @@ class GStrorage { await Hive.initFlutter('$path/hive'); regAdapter(); // 用户信息 - user = await Hive.openBox('user'); + user = await Hive.openBox( + 'user', + compactionStrategy: (entries, deletedEntries) { + return deletedEntries > 10; + }, + ); // 首页推荐视频 recVideo = await Hive.openBox( 'recVideo', compactionStrategy: (entries, deletedEntries) { - return deletedEntries > 20; + return deletedEntries > 12; }, ); // 登录用户信息