mod: 控制器监听事件移除

This commit is contained in:
guozhigq
2023-08-20 09:12:31 +08:00
parent 6bbbdd7710
commit 8627869309
16 changed files with 114 additions and 31 deletions

View File

@ -23,13 +23,15 @@ class _BangumiPageState extends State<BangumiPage>
with AutomaticKeepAliveClientMixin { with AutomaticKeepAliveClientMixin {
final BangumiController _bangumidController = Get.put(BangumiController()); final BangumiController _bangumidController = Get.put(BangumiController());
late Future? _futureBuilderFuture; late Future? _futureBuilderFuture;
late ScrollController scrollController;
@override @override
bool get wantKeepAlive => true; bool get wantKeepAlive => true;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
ScrollController scrollController = _bangumidController.scrollController; scrollController = _bangumidController.scrollController;
StreamController<bool> mainStream = StreamController<bool> mainStream =
Get.find<MainController>().bottomBarStream; Get.find<MainController>().bottomBarStream;
_futureBuilderFuture = _bangumidController.queryBangumiListFeed(); _futureBuilderFuture = _bangumidController.queryBangumiListFeed();
@ -54,6 +56,12 @@ class _BangumiPageState extends State<BangumiPage>
); );
} }
@override
void dispose() {
scrollController.removeListener(() {});
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);

View File

@ -46,6 +46,7 @@ class _BlackListPageState extends State<BlackListPage> {
List<int> blackMidsList = List<int> blackMidsList =
_blackListController.blackList.map<int>((e) => e.mid!).toList(); _blackListController.blackList.map<int>((e) => e.mid!).toList();
setting.put(SettingBoxKey.blackMidsList, blackMidsList); setting.put(SettingBoxKey.blackMidsList, blackMidsList);
scrollController.removeListener(() {});
super.dispose(); super.dispose();
} }

View File

@ -95,6 +95,12 @@ class _DynamicDetailPageState extends State<DynamicDetailPage> {
); );
} }
@override
void dispose() {
scrollController.removeListener(() {});
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(

View File

@ -32,6 +32,7 @@ class _DynamicsPageState extends State<DynamicsPage>
bool _isLoadingMore = false; bool _isLoadingMore = false;
Box user = GStrorage.user; Box user = GStrorage.user;
EventBus eventBus = EventBus(); EventBus eventBus = EventBus();
late ScrollController scrollController;
@override @override
bool get wantKeepAlive => true; bool get wantKeepAlive => true;
@ -41,7 +42,7 @@ class _DynamicsPageState extends State<DynamicsPage>
super.initState(); super.initState();
_futureBuilderFuture = _dynamicsController.queryFollowDynamic(); _futureBuilderFuture = _dynamicsController.queryFollowDynamic();
_futureBuilderFutureUp = _dynamicsController.queryFollowUp(); _futureBuilderFutureUp = _dynamicsController.queryFollowUp();
ScrollController scrollController = _dynamicsController.scrollController; scrollController = _dynamicsController.scrollController;
StreamController<bool> mainStream = StreamController<bool> mainStream =
Get.find<MainController>().bottomBarStream; Get.find<MainController>().bottomBarStream;
scrollController.addListener( scrollController.addListener(
@ -74,6 +75,12 @@ class _DynamicsPageState extends State<DynamicsPage>
}); });
} }
@override
void dispose() {
scrollController.removeListener(() {});
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);

View File

@ -37,6 +37,12 @@ class _FansPageState extends State<FansPage> {
); );
} }
@override
void dispose() {
scrollController.removeListener(() {});
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(

View File

@ -37,6 +37,12 @@ class _FollowPageState extends State<FollowPage> {
); );
} }
@override
void dispose() {
scrollController.removeListener(() {});
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(

View File

@ -1,3 +1,4 @@
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:pilipala/common/skeleton/video_card_h.dart'; import 'package:pilipala/common/skeleton/video_card_h.dart';
@ -17,25 +18,33 @@ class HistoryPage extends StatefulWidget {
class _HistoryPageState extends State<HistoryPage> { class _HistoryPageState extends State<HistoryPage> {
final HistoryController _historyController = Get.put(HistoryController()); final HistoryController _historyController = Get.put(HistoryController());
Future? _futureBuilderFuture; Future? _futureBuilderFuture;
late ScrollController scrollController;
@override @override
void initState() { void initState() {
_futureBuilderFuture = _historyController.queryHistoryList(); _futureBuilderFuture = _historyController.queryHistoryList();
super.initState(); super.initState();
scrollController = _historyController.scrollController;
_historyController.scrollController.addListener( scrollController.addListener(
() { () {
if (_historyController.scrollController.position.pixels >= if (scrollController.position.pixels >=
_historyController.scrollController.position.maxScrollExtent - scrollController.position.maxScrollExtent - 300) {
300) {
if (!_historyController.isLoadingMore.value) { if (!_historyController.isLoadingMore.value) {
_historyController.onLoad(); EasyThrottle.throttle('history', const Duration(seconds: 1), () {
_historyController.onLoad();
});
} }
} }
}, },
); );
} }
@override
void dispose() {
scrollController.removeListener(() {});
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(

View File

@ -23,6 +23,7 @@ class _HotPageState extends State<HotPage> with AutomaticKeepAliveClientMixin {
final HotController _hotController = Get.put(HotController()); final HotController _hotController = Get.put(HotController());
List videoList = []; List videoList = [];
Future? _futureBuilderFuture; Future? _futureBuilderFuture;
late ScrollController scrollController;
@override @override
bool get wantKeepAlive => true; bool get wantKeepAlive => true;
@ -31,7 +32,7 @@ class _HotPageState extends State<HotPage> with AutomaticKeepAliveClientMixin {
void initState() { void initState() {
super.initState(); super.initState();
_futureBuilderFuture = _hotController.queryHotFeed('init'); _futureBuilderFuture = _hotController.queryHotFeed('init');
ScrollController scrollController = _hotController.scrollController; scrollController = _hotController.scrollController;
StreamController<bool> mainStream = StreamController<bool> mainStream =
Get.find<MainController>().bottomBarStream; Get.find<MainController>().bottomBarStream;
scrollController.addListener( scrollController.addListener(
@ -55,6 +56,12 @@ class _HotPageState extends State<HotPage> with AutomaticKeepAliveClientMixin {
); );
} }
@override
void dispose() {
scrollController.removeListener(() {});
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);

View File

@ -24,12 +24,13 @@ class LivePage extends StatefulWidget {
class _LivePageState extends State<LivePage> { class _LivePageState extends State<LivePage> {
final LiveController _liveController = Get.put(LiveController()); final LiveController _liveController = Get.put(LiveController());
late Future _futureBuilderFuture; late Future _futureBuilderFuture;
late ScrollController scrollController;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_futureBuilderFuture = _liveController.queryLiveList('init'); _futureBuilderFuture = _liveController.queryLiveList('init');
ScrollController scrollController = _liveController.scrollController; scrollController = _liveController.scrollController;
StreamController<bool> mainStream = StreamController<bool> mainStream =
Get.find<MainController>().bottomBarStream; Get.find<MainController>().bottomBarStream;
scrollController.addListener( scrollController.addListener(
@ -53,6 +54,12 @@ class _LivePageState extends State<LivePage> {
); );
} }
@override
void dispose() {
scrollController.removeListener(() {});
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(

View File

@ -43,6 +43,12 @@ class _MemberPageState extends State<MemberPage>
); );
} }
@override
void dispose() {
_extendNestCtr.removeListener(() {});
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(

View File

@ -41,7 +41,8 @@ class _RcmdPageState extends State<RcmdPage>
() { () {
if (scrollController.position.pixels >= if (scrollController.position.pixels >=
scrollController.position.maxScrollExtent - 200) { scrollController.position.maxScrollExtent - 200) {
EasyThrottle.throttle('my-throttler', const Duration(seconds: 1), () { EasyThrottle.throttle(
'my-throttler', const Duration(milliseconds: 500), () {
_rcmdController.isLoadingMore = true; _rcmdController.isLoadingMore = true;
_rcmdController.onLoad(); _rcmdController.onLoad();
}); });
@ -58,6 +59,12 @@ class _RcmdPageState extends State<RcmdPage>
); );
} }
@override
void dispose() {
_rcmdController.scrollController.removeListener(() {});
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);

View File

@ -1,3 +1,4 @@
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:pilipala/common/skeleton/media_bangumi.dart'; import 'package:pilipala/common/skeleton/media_bangumi.dart';
@ -29,6 +30,7 @@ class _SearchPanelState extends State<SearchPanel>
bool _isLoadingMore = false; bool _isLoadingMore = false;
late Future _futureBuilderFuture; late Future _futureBuilderFuture;
late ScrollController scrollController;
@override @override
bool get wantKeepAlive => true; bool get wantKeepAlive => true;
@ -43,20 +45,24 @@ class _SearchPanelState extends State<SearchPanel>
), ),
tag: widget.searchType!.type, tag: widget.searchType!.type,
); );
ScrollController scrollController = _searchPanelController.scrollController; scrollController = _searchPanelController.scrollController;
scrollController.addListener(() async { scrollController.addListener(() async {
if (scrollController.position.pixels >= if (scrollController.position.pixels >=
scrollController.position.maxScrollExtent - 100) { scrollController.position.maxScrollExtent - 100) {
if (!_isLoadingMore) { EasyThrottle.throttle('history', const Duration(seconds: 1), () {
_isLoadingMore = true; _searchPanelController.onSearch(type: 'onLoad');
await _searchPanelController.onSearch(type: 'onLoad'); });
_isLoadingMore = false;
}
} }
}); });
_futureBuilderFuture = _searchPanelController.onSearch(); _futureBuilderFuture = _searchPanelController.onSearch();
} }
@override
void dispose() {
scrollController.removeListener(() {});
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);

View File

@ -34,6 +34,7 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
with AutomaticKeepAliveClientMixin, TickerProviderStateMixin { with AutomaticKeepAliveClientMixin, TickerProviderStateMixin {
late VideoReplyController _videoReplyController; late VideoReplyController _videoReplyController;
late AnimationController fabAnimationCtr; late AnimationController fabAnimationCtr;
late ScrollController scrollController;
Future? _futureBuilderFuture; Future? _futureBuilderFuture;
bool _isFabVisible = true; bool _isFabVisible = true;
@ -61,18 +62,18 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
vsync: this, duration: const Duration(milliseconds: 300)); vsync: this, duration: const Duration(milliseconds: 300));
_futureBuilderFuture = _videoReplyController.queryReplyList(); _futureBuilderFuture = _videoReplyController.queryReplyList();
_videoReplyController.scrollController.addListener( scrollController = _videoReplyController.scrollController;
scrollController.addListener(
() { () {
if (_videoReplyController.scrollController.position.pixels >= if (scrollController.position.pixels >=
_videoReplyController.scrollController.position.maxScrollExtent - scrollController.position.maxScrollExtent - 300) {
300) {
EasyThrottle.throttle('replylist', const Duration(seconds: 2), () { EasyThrottle.throttle('replylist', const Duration(seconds: 2), () {
_videoReplyController.onLoad(); _videoReplyController.onLoad();
}); });
} }
final ScrollDirection direction = final ScrollDirection direction =
_videoReplyController.scrollController.position.userScrollDirection; scrollController.position.userScrollDirection;
if (direction == ScrollDirection.forward) { if (direction == ScrollDirection.forward) {
_showFab(); _showFab();
} else if (direction == ScrollDirection.reverse) { } else if (direction == ScrollDirection.reverse) {
@ -113,7 +114,7 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
void dispose() { void dispose() {
super.dispose(); super.dispose();
fabAnimationCtr.dispose(); fabAnimationCtr.dispose();
_videoReplyController.scrollController.dispose(); scrollController.dispose();
} }
@override @override

View File

@ -38,6 +38,7 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel> {
Box localCache = GStrorage.localCache; Box localCache = GStrorage.localCache;
late double sheetHeight; late double sheetHeight;
Future? _futureBuilderFuture; Future? _futureBuilderFuture;
late ScrollController scrollController;
@override @override
void initState() { void initState() {
@ -48,12 +49,11 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel> {
super.initState(); super.initState();
// 上拉加载更多 // 上拉加载更多
_videoReplyReplyController.scrollController.addListener( scrollController = _videoReplyReplyController.scrollController;
scrollController.addListener(
() { () {
if (_videoReplyReplyController.scrollController.position.pixels >= if (scrollController.position.pixels >=
_videoReplyReplyController scrollController.position.maxScrollExtent - 300) {
.scrollController.position.maxScrollExtent -
300) {
if (!_videoReplyReplyController.isLoadingMore) { if (!_videoReplyReplyController.isLoadingMore) {
_videoReplyReplyController.onLoad(); _videoReplyReplyController.onLoad();
} }
@ -69,7 +69,7 @@ class _VideoReplyReplyPanelState extends State<VideoReplyReplyPanel> {
@override @override
void dispose() { void dispose() {
// _videoReplyReplyController.scrollController.dispose(); scrollController.dispose();
super.dispose(); super.dispose();
} }

View File

@ -229,6 +229,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
@override @override
void dispose() { void dispose() {
animationController.dispose(); animationController.dispose();
FlutterVolumeController.removeListener();
super.dispose(); super.dispose();
} }

View File

@ -22,12 +22,17 @@ class GStrorage {
await Hive.initFlutter('$path/hive'); await Hive.initFlutter('$path/hive');
regAdapter(); regAdapter();
// 用户信息 // 用户信息
user = await Hive.openBox('user'); user = await Hive.openBox(
'user',
compactionStrategy: (entries, deletedEntries) {
return deletedEntries > 10;
},
);
// 首页推荐视频 // 首页推荐视频
recVideo = await Hive.openBox( recVideo = await Hive.openBox(
'recVideo', 'recVideo',
compactionStrategy: (entries, deletedEntries) { compactionStrategy: (entries, deletedEntries) {
return deletedEntries > 20; return deletedEntries > 12;
}, },
); );
// 登录用户信息 // 登录用户信息