From 37063ced5d50765d55c4414cd225d45ba8ff0c22 Mon Sep 17 00:00:00 2001 From: wuqifeng <540416539@qq.com> Date: Sat, 27 Jul 2024 16:02:44 +0800 Subject: [PATCH] feat:阶段选择指示器与阶段色联动;阶段选择点击增加音效(音频文件待提供) --- lib/common/utils/click_with_music_controller.dart | 3 ++- lib/pages/module/course_module_page.dart | 27 +++++++++++++++++++++------ lib/pages/section/section_page.dart | 2 +- lib/pages/section/widgets/section_header_widget.dart | 4 +++- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/lib/common/utils/click_with_music_controller.dart b/lib/common/utils/click_with_music_controller.dart index 288302b..c58f651 100644 --- a/lib/common/utils/click_with_music_controller.dart +++ b/lib/common/utils/click_with_music_controller.dart @@ -17,8 +17,9 @@ class ClickWithMusicController { bool _isPlaying = false; + ///@param context 暂时没用到,先可空预留 ///@param action 可以是同步函数也可以是异步函数 - Future playMusicAndPerformAction(BuildContext context, + Future playMusicAndPerformAction(BuildContext? context, AudioPlayerUtilType audioType, FutureOr Function() action) async { if (_isPlaying) return; diff --git a/lib/pages/module/course_module_page.dart b/lib/pages/module/course_module_page.dart index 6289434..a827b88 100644 --- a/lib/pages/module/course_module_page.dart +++ b/lib/pages/module/course_module_page.dart @@ -5,6 +5,9 @@ import 'package:wow_english/common/widgets/we_app_bar.dart'; import 'package:wow_english/models/course_module_entity.dart'; import 'package:wow_english/route/route.dart'; +import '../../common/utils/click_with_music_controller.dart'; +import '../../utils/audio_player_util.dart'; +import '../section/courese_module_model.dart'; import 'bloc/module_bloc.dart'; import 'widgets/module_item_widget.dart'; @@ -67,6 +70,7 @@ class _LessonPageView extends StatelessWidget { itemCount: bloc.listData.length, scrollDirection: Axis.horizontal, itemBuilder: (BuildContext context, int index) { + CourseModuleEntity? model = bloc.listData[index]; return Container( height: 32.h, width: 66.w, @@ -86,9 +90,16 @@ class _LessonPageView extends StatelessWidget { child: Container( height: bloc.currentPageIndex == index ? 32 : 20, decoration: BoxDecoration( - color: bloc.currentPageIndex == index - ? Colors.red - : Colors.white, + // color: bloc.currentPageIndex == index + // ? Colors.red + // : Colors.white, + color: + CourseModuleModel(model?.code ?? 'Phase-1') + .color + .withOpacity( + bloc.currentPageIndex == index + ? 1 + : 0.35), borderRadius: BorderRadius.circular(5.r), border: Border.all( width: 0.5, @@ -156,9 +167,13 @@ class _LessonPageView extends StatelessWidget { model: model, isSelected: bloc.currentPageIndex == index, onClickEvent: () { - pushNamedAndRemoveUntil( - AppRouteName.courseUnit, (route) => route.isFirst, - arguments: {'courseModuleEntity': model}); + ///todo 不同阶段音乐文件待提供 + ClickWithMusicController.instance.playMusicAndPerformAction( + context, + AudioPlayerUtilType.welcomeToWow, + () => pushNamedAndRemoveUntil( + AppRouteName.courseUnit, (route) => route.isFirst, + arguments: {'courseModuleEntity': model})); }, ), ), diff --git a/lib/pages/section/section_page.dart b/lib/pages/section/section_page.dart index 2ea9712..b483a5f 100644 --- a/lib/pages/section/section_page.dart +++ b/lib/pages/section/section_page.dart @@ -19,7 +19,7 @@ import '../../utils/log_util.dart'; import 'bloc/section_bloc.dart'; import 'courese_module_model.dart'; -/// 环节列表页 +/// 环节(课程)列表页 class SectionPage extends StatelessWidget { const SectionPage( {super.key, required this.courseUnitEntity, required this.courseUnitId}); diff --git a/lib/pages/section/widgets/section_header_widget.dart b/lib/pages/section/widgets/section_header_widget.dart index 54eb6d3..82739c5 100644 --- a/lib/pages/section/widgets/section_header_widget.dart +++ b/lib/pages/section/widgets/section_header_widget.dart @@ -6,8 +6,10 @@ 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, this.onBack}); + const SectionHeaderWidget( + {super.key, this.title, this.courseModuleCode, this.onBack}); final String? title; -- libgit2 0.22.2