From 26982eea5d848e64a67756eb46c85a4899f78d34 Mon Sep 17 00:00:00 2001 From: wuqifeng <540416539@qq.com> Date: Thu, 25 Jul 2024 01:11:41 +0800 Subject: [PATCH] feat:环节页点击节流优化 --- lib/pages/section/bloc/section_bloc.dart | 12 ++++++++++++ lib/pages/section/section_page.dart | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/pages/section/bloc/section_bloc.dart b/lib/pages/section/bloc/section_bloc.dart index 4df2807..23a5016 100644 --- a/lib/pages/section/bloc/section_bloc.dart +++ b/lib/pages/section/bloc/section_bloc.dart @@ -16,6 +16,7 @@ import 'package:wow_english/utils/toast_util.dart'; import '../../../models/course_section_entity.dart'; import '../../../models/course_unit_entity.dart'; import '../../../utils/list_ext.dart'; +import '../../../utils/log_util.dart'; part 'section_event.dart'; @@ -56,6 +57,9 @@ class SectionBloc extends Bloc { CourseProcessEntity? get processEntity => _processEntity; + ///点击环节后先请求数据再进入,标志位避免频繁点击多次请求(以及多次进入) + bool _isRequesting = false; + SectionBloc(this._courseUnitEntity, this._currentPage, this._pageController, this._listController, this._indicatorSrollController) : super(LessonInitial()) { @@ -100,12 +104,19 @@ class SectionBloc extends Bloc { if (e is ApiException) { showToast(e.message ?? '请求失败,请检查网络连接'); } + } finally { + _isRequesting = false; } } void _requestEnterClass( RequestEnterClassEvent event, Emitter emitter) async { try { + Log.d("WQF _requestVideoLesson _isRequesting=$_isRequesting"); + if (_isRequesting) { + return; + } + _isRequesting = true; await loading(() async { await ListenDao.enterClass(event.courseLessonId); emitter(RequestEnterClassState(event.courseLessonId, event.courseType)); @@ -113,6 +124,7 @@ class SectionBloc extends Bloc { } catch (e) { if (e is ApiException) { showToast(e.message ?? '请求失败,请检查网络连接'); + _isRequesting = false; } } } diff --git a/lib/pages/section/section_page.dart b/lib/pages/section/section_page.dart index 2a31395..9b9417e 100644 --- a/lib/pages/section/section_page.dart +++ b/lib/pages/section/section_page.dart @@ -103,10 +103,10 @@ class _SectionPageView extends StatelessWidget { ///视频类型 ///获取视频课程内容 if (state.courseType == 1) { - await AudioPlayerUtil.getInstance() + AudioPlayerUtil.getInstance() .playAudio(AudioPlayerUtilType.musicTime); } else { - await AudioPlayerUtil.getInstance() + AudioPlayerUtil.getInstance() .playAudio(AudioPlayerUtilType.videoTime); } bloc.add(RequestVideoLessonEvent( -- libgit2 0.22.2