From b7eed8578afdfc85e953a668dd06f9fe81c42237 Mon Sep 17 00:00:00 2001 From: guozhigq Date: Sat, 19 Aug 2023 20:37:42 +0800 Subject: [PATCH] =?UTF-8?q?mod:=20=E8=AF=B7=E6=B1=82=E8=8A=82=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/bangumi/view.dart | 7 ++++--- lib/pages/live/view.dart | 5 +++-- lib/pages/rcmd/view.dart | 9 ++++----- lib/pages/video/detail/reply/controller.dart | 3 +++ lib/pages/video/detail/reply/view.dart | 5 +++-- pubspec.lock | 8 ++++++++ pubspec.yaml | 2 ++ 7 files changed, 27 insertions(+), 12 deletions(-) diff --git a/lib/pages/bangumi/view.dart b/lib/pages/bangumi/view.dart index 6c25e508..307fc5af 100644 --- a/lib/pages/bangumi/view.dart +++ b/lib/pages/bangumi/view.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:get/get.dart'; @@ -36,10 +37,10 @@ class _BangumiPageState extends State () async { if (scrollController.position.pixels >= scrollController.position.maxScrollExtent - 200) { - if (!_bangumidController.isLoadingMore) { + EasyThrottle.throttle('my-throttler', const Duration(seconds: 1), () { _bangumidController.isLoadingMore = true; - await _bangumidController.onLoad(); - } + _bangumidController.onLoad(); + }); } final ScrollDirection direction = diff --git a/lib/pages/live/view.dart b/lib/pages/live/view.dart index e07950ae..e76f3084 100644 --- a/lib/pages/live/view.dart +++ b/lib/pages/live/view.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:get/get.dart'; @@ -35,10 +36,10 @@ class _LivePageState extends State { () { if (scrollController.position.pixels >= scrollController.position.maxScrollExtent - 200) { - if (!_liveController.isLoadingMore) { + EasyThrottle.throttle('my-throttler', const Duration(seconds: 1), () { _liveController.isLoadingMore = true; _liveController.onLoad(); - } + }); } final ScrollDirection direction = diff --git a/lib/pages/rcmd/view.dart b/lib/pages/rcmd/view.dart index 6cead2df..b49057ba 100644 --- a/lib/pages/rcmd/view.dart +++ b/lib/pages/rcmd/view.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io'; +import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:get/get.dart'; @@ -40,12 +41,10 @@ class _RcmdPageState extends State () { if (scrollController.position.pixels >= scrollController.position.maxScrollExtent - 200) { - if (!_rcmdController.isLoadingMore) { + EasyThrottle.throttle('my-throttler', const Duration(seconds: 1), () { _rcmdController.isLoadingMore = true; - WidgetsBinding.instance.addPostFrameCallback((_) async { - _rcmdController.onLoad(); - }); - } + _rcmdController.onLoad(); + }); } final ScrollDirection direction = diff --git a/lib/pages/video/detail/reply/controller.dart b/lib/pages/video/detail/reply/controller.dart index 5bde42ba..a81674af 100644 --- a/lib/pages/video/detail/reply/controller.dart +++ b/lib/pages/video/detail/reply/controller.dart @@ -37,6 +37,9 @@ class VideoReplyController extends GetxController { if (type == 'init') { currentPage = 0; } + if (noMore.value == '没有更多了') { + return; + } var res = await ReplyHttp.replyList( oid: aid!, pageNum: currentPage + 1, diff --git a/lib/pages/video/detail/reply/view.dart b/lib/pages/video/detail/reply/view.dart index 83744c47..f17bb819 100644 --- a/lib/pages/video/detail/reply/view.dart +++ b/lib/pages/video/detail/reply/view.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:get/get.dart'; @@ -65,9 +66,9 @@ class _VideoReplyPanelState extends State if (_videoReplyController.scrollController.position.pixels >= _videoReplyController.scrollController.position.maxScrollExtent - 300) { - if (!_videoReplyController.isLoadingMore) { + EasyThrottle.throttle('replylist', const Duration(seconds: 2), () { _videoReplyController.onLoad(); - } + }); } final ScrollDirection direction = diff --git a/pubspec.lock b/pubspec.lock index d7731104..ce8ddd59 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -337,6 +337,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.6.6" + easy_debounce: + dependency: "direct main" + description: + name: easy_debounce + sha256: f082609cfb8f37defb9e37fc28bc978c6712dedf08d4c5a26f820fa10165a236 + url: "https://pub.dev" + source: hosted + version: "2.0.3" extended_image: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 1ad77b54..e833aebd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -113,6 +113,8 @@ dependencies: package_info_plus: ^4.1.0 url_launcher: ^6.1.12 flutter_svg: ^2.0.7 + # 防抖节流 + easy_debounce: ^2.0.3 dev_dependencies: flutter_test: