Commit 37063ced5d50765d55c4414cd225d45ba8ff0c22

Authored by 吴启风
1 parent 7b87c05c

feat:阶段选择指示器与阶段色联动;阶段选择点击增加音效(音频文件待提供)

lib/common/utils/click_with_music_controller.dart
... ... @@ -17,8 +17,9 @@ class ClickWithMusicController {
17 17  
18 18 bool _isPlaying = false;
19 19  
  20 + ///@param context 暂时没用到,先可空预留
20 21 ///@param action 可以是同步函数也可以是异步函数
21   - Future<void> playMusicAndPerformAction(BuildContext context,
  22 + Future<void> playMusicAndPerformAction(BuildContext? context,
22 23 AudioPlayerUtilType audioType, FutureOr<void> Function() action) async {
23 24 if (_isPlaying) return;
24 25  
... ...
lib/pages/module/course_module_page.dart
... ... @@ -5,6 +5,9 @@ import &#39;package:wow_english/common/widgets/we_app_bar.dart&#39;;
5 5 import 'package:wow_english/models/course_module_entity.dart';
6 6 import 'package:wow_english/route/route.dart';
7 7  
  8 +import '../../common/utils/click_with_music_controller.dart';
  9 +import '../../utils/audio_player_util.dart';
  10 +import '../section/courese_module_model.dart';
8 11 import 'bloc/module_bloc.dart';
9 12 import 'widgets/module_item_widget.dart';
10 13  
... ... @@ -67,6 +70,7 @@ class _LessonPageView extends StatelessWidget {
67 70 itemCount: bloc.listData.length,
68 71 scrollDirection: Axis.horizontal,
69 72 itemBuilder: (BuildContext context, int index) {
  73 + CourseModuleEntity? model = bloc.listData[index];
70 74 return Container(
71 75 height: 32.h,
72 76 width: 66.w,
... ... @@ -86,9 +90,16 @@ class _LessonPageView extends StatelessWidget {
86 90 child: Container(
87 91 height: bloc.currentPageIndex == index ? 32 : 20,
88 92 decoration: BoxDecoration(
89   - color: bloc.currentPageIndex == index
90   - ? Colors.red
91   - : Colors.white,
  93 + // color: bloc.currentPageIndex == index
  94 + // ? Colors.red
  95 + // : Colors.white,
  96 + color:
  97 + CourseModuleModel(model?.code ?? 'Phase-1')
  98 + .color
  99 + .withOpacity(
  100 + bloc.currentPageIndex == index
  101 + ? 1
  102 + : 0.35),
92 103 borderRadius: BorderRadius.circular(5.r),
93 104 border: Border.all(
94 105 width: 0.5,
... ... @@ -156,9 +167,13 @@ class _LessonPageView extends StatelessWidget {
156 167 model: model,
157 168 isSelected: bloc.currentPageIndex == index,
158 169 onClickEvent: () {
159   - pushNamedAndRemoveUntil(
160   - AppRouteName.courseUnit, (route) => route.isFirst,
161   - arguments: {'courseModuleEntity': model});
  170 + ///todo 不同阶段音乐文件待提供
  171 + ClickWithMusicController.instance.playMusicAndPerformAction(
  172 + context,
  173 + AudioPlayerUtilType.welcomeToWow,
  174 + () => pushNamedAndRemoveUntil(
  175 + AppRouteName.courseUnit, (route) => route.isFirst,
  176 + arguments: {'courseModuleEntity': model}));
162 177 },
163 178 ),
164 179 ),
... ...
lib/pages/section/section_page.dart
... ... @@ -19,7 +19,7 @@ import &#39;../../utils/log_util.dart&#39;;
19 19 import 'bloc/section_bloc.dart';
20 20 import 'courese_module_model.dart';
21 21  
22   -/// 环节列表页
  22 +/// 环节(课程)列表页
23 23 class SectionPage extends StatelessWidget {
24 24 const SectionPage(
25 25 {super.key, required this.courseUnitEntity, required this.courseUnitId});
... ...
lib/pages/section/widgets/section_header_widget.dart
... ... @@ -6,8 +6,10 @@ import &#39;package:wow_english/pages/user/bloc/user_bloc.dart&#39;;
6 6  
7 7 import '../courese_module_model.dart';
8 8  
  9 +/// 环节(课程)列表页标题栏
9 10 class SectionHeaderWidget extends StatelessWidget {
10   - const SectionHeaderWidget({super.key, this.title, this.courseModuleCode, this.onBack});
  11 + const SectionHeaderWidget(
  12 + {super.key, this.title, this.courseModuleCode, this.onBack});
11 13  
12 14 final String? title;
13 15  
... ...