From 0cbdbb3480bd41cd223ef9fbc64649dcb0f718c1 Mon Sep 17 00:00:00 2001 From: wuqifeng <540416539@qq.com> Date: Fri, 17 May 2024 10:32:15 +0800 Subject: [PATCH] feat:环节列表页返回单元列表页是增加刷新逻辑 --- lib/pages/section/bloc/section_bloc.dart | 13 +++++++++---- lib/pages/section/section_page.dart | 11 ++++++++--- lib/pages/section/widgets/section_header_widget.dart | 10 ++++++++-- lib/pages/unit/view.dart | 10 +++++++++- 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/lib/pages/section/bloc/section_bloc.dart b/lib/pages/section/bloc/section_bloc.dart index 2c1c5e0..b2ae471 100644 --- a/lib/pages/section/bloc/section_bloc.dart +++ b/lib/pages/section/bloc/section_bloc.dart @@ -40,6 +40,9 @@ class SectionBloc extends Bloc { CourseUnitEntity get courseUnitEntity => _courseUnitEntity; + ///单元列表是否有刷新,有的话返回上一页时通知其刷新接口数据 + bool courseUnitEntityChanged = false; + ///courseUnitId与课程环节列表的映射 final Map?> _courseSectionDatasMap = {}; @@ -154,10 +157,11 @@ class SectionBloc extends Bloc { ///未锁定的页(单元)数 int unlockPageCount() { - return _courseUnitEntity.courseUnitVOList - ?.indexWhereOrNull((element) => element.lock == true) ?? - _courseUnitEntity.courseUnitVOList?.length ?? - 0; + // return _courseUnitEntity.courseUnitVOList + // ?.indexWhereOrNull((element) => element.lock == true) ?? + // _courseUnitEntity.courseUnitVOList?.length ?? + // 0; + return _courseUnitEntity.courseUnitVOList?.length ?? 0; } ///当前页的课程详情 @@ -278,6 +282,7 @@ class SectionBloc extends Bloc { if (nextCourseUnitDetail?.lock == false) { ///解锁状态从锁定到解锁,覆盖原unit数据并刷新ui _courseUnitEntity = newCourseUnitEntity!; + courseUnitEntityChanged = true; emitter(LessonDataLoadState()); return checkCourseSectionLockedOfNextUnit(courseLessonId, nextCourseUnitDetail!.id!, emitter); diff --git a/lib/pages/section/section_page.dart b/lib/pages/section/section_page.dart index b415193..8adbc11 100644 --- a/lib/pages/section/section_page.dart +++ b/lib/pages/section/section_page.dart @@ -38,9 +38,9 @@ class SectionPage extends StatelessWidget { initialPage, PageController(initialPage: initialPage), ScrollController(), - ScrollController()) + ScrollController()), //为了触发指示器进入后计算位置 - ..add(CurrentUnitIndexChangeEvent(initialPage)), + // ..add(CurrentUnitIndexChangeEvent(initialPage)), child: _SectionPageView(context), ); } @@ -152,7 +152,12 @@ class _SectionPageView extends StatelessWidget { children: [ SectionHeaderWidget( title: bloc.getCourseUnitDetail().name, - courseModuleCode: bloc.courseUnitEntity.courseModuleCode), + courseModuleCode: bloc.courseUnitEntity.courseModuleCode, + onBack: () { + popPage(data: { + 'needRefresh': bloc.courseUnitEntityChanged, + }); + }), Expanded( child: Padding( padding: EdgeInsets.symmetric(horizontal: 10.w), diff --git a/lib/pages/section/widgets/section_header_widget.dart b/lib/pages/section/widgets/section_header_widget.dart index 91833df..54eb6d3 100644 --- a/lib/pages/section/widgets/section_header_widget.dart +++ b/lib/pages/section/widgets/section_header_widget.dart @@ -7,12 +7,14 @@ import 'package:wow_english/pages/user/bloc/user_bloc.dart'; import '../courese_module_model.dart'; class SectionHeaderWidget extends StatelessWidget { - const SectionHeaderWidget({super.key, this.title, this.courseModuleCode}); + const SectionHeaderWidget({super.key, this.title, this.courseModuleCode, this.onBack}); final String? title; final String? courseModuleCode; + final VoidCallback? onBack; + @override Widget build(BuildContext context) { return BlocBuilder( @@ -27,7 +29,11 @@ class SectionHeaderWidget extends StatelessWidget { ScreenUtil().bottomBarHeight.horizontalSpace, GestureDetector( onTap: () { - Navigator.pop(context); + if (onBack == null) { + Navigator.pop(context); + } else { + onBack!(); + } }, child: Container( alignment: Alignment.center, diff --git a/lib/pages/unit/view.dart b/lib/pages/unit/view.dart index cb4b0f4..ed7f07c 100644 --- a/lib/pages/unit/view.dart +++ b/lib/pages/unit/view.dart @@ -65,7 +65,15 @@ class UnitPage extends StatelessWidget { arguments: { 'courseUnitEntity': bloc.unitData, 'courseUnitId': data.id - }); + }).then((value) { + if (value != null) { + Map dataMap = value as Map; + bool needRefresh = dataMap['needRefresh']; + if (needRefresh) { + bloc.add(RequestUnitDataEvent(courseModuleEntity?.id)); + } + } + }); }, child: CourseUnitItem( unitEntity: bloc.unitData!, -- libgit2 0.22.2