Commit 37063ced5d50765d55c4414cd225d45ba8ff0c22

Authored by 吴启风
1 parent 7b87c05c

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

lib/common/utils/click_with_music_controller.dart
@@ -17,8 +17,9 @@ class ClickWithMusicController { @@ -17,8 +17,9 @@ class ClickWithMusicController {
17 17
18 bool _isPlaying = false; 18 bool _isPlaying = false;
19 19
  20 + ///@param context 暂时没用到,先可空预留
20 ///@param action 可以是同步函数也可以是异步函数 21 ///@param action 可以是同步函数也可以是异步函数
21 - Future<void> playMusicAndPerformAction(BuildContext context, 22 + Future<void> playMusicAndPerformAction(BuildContext? context,
22 AudioPlayerUtilType audioType, FutureOr<void> Function() action) async { 23 AudioPlayerUtilType audioType, FutureOr<void> Function() action) async {
23 if (_isPlaying) return; 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,6 +5,9 @@ import &#39;package:wow_english/common/widgets/we_app_bar.dart&#39;;
5 import 'package:wow_english/models/course_module_entity.dart'; 5 import 'package:wow_english/models/course_module_entity.dart';
6 import 'package:wow_english/route/route.dart'; 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 import 'bloc/module_bloc.dart'; 11 import 'bloc/module_bloc.dart';
9 import 'widgets/module_item_widget.dart'; 12 import 'widgets/module_item_widget.dart';
10 13
@@ -67,6 +70,7 @@ class _LessonPageView extends StatelessWidget { @@ -67,6 +70,7 @@ class _LessonPageView extends StatelessWidget {
67 itemCount: bloc.listData.length, 70 itemCount: bloc.listData.length,
68 scrollDirection: Axis.horizontal, 71 scrollDirection: Axis.horizontal,
69 itemBuilder: (BuildContext context, int index) { 72 itemBuilder: (BuildContext context, int index) {
  73 + CourseModuleEntity? model = bloc.listData[index];
70 return Container( 74 return Container(
71 height: 32.h, 75 height: 32.h,
72 width: 66.w, 76 width: 66.w,
@@ -86,9 +90,16 @@ class _LessonPageView extends StatelessWidget { @@ -86,9 +90,16 @@ class _LessonPageView extends StatelessWidget {
86 child: Container( 90 child: Container(
87 height: bloc.currentPageIndex == index ? 32 : 20, 91 height: bloc.currentPageIndex == index ? 32 : 20,
88 decoration: BoxDecoration( 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 borderRadius: BorderRadius.circular(5.r), 103 borderRadius: BorderRadius.circular(5.r),
93 border: Border.all( 104 border: Border.all(
94 width: 0.5, 105 width: 0.5,
@@ -156,9 +167,13 @@ class _LessonPageView extends StatelessWidget { @@ -156,9 +167,13 @@ class _LessonPageView extends StatelessWidget {
156 model: model, 167 model: model,
157 isSelected: bloc.currentPageIndex == index, 168 isSelected: bloc.currentPageIndex == index,
158 onClickEvent: () { 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,7 +19,7 @@ import &#39;../../utils/log_util.dart&#39;;
19 import 'bloc/section_bloc.dart'; 19 import 'bloc/section_bloc.dart';
20 import 'courese_module_model.dart'; 20 import 'courese_module_model.dart';
21 21
22 -/// 环节列表页 22 +/// 环节(课程)列表页
23 class SectionPage extends StatelessWidget { 23 class SectionPage extends StatelessWidget {
24 const SectionPage( 24 const SectionPage(
25 {super.key, required this.courseUnitEntity, required this.courseUnitId}); 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,8 +6,10 @@ import &#39;package:wow_english/pages/user/bloc/user_bloc.dart&#39;;
6 6
7 import '../courese_module_model.dart'; 7 import '../courese_module_model.dart';
8 8
  9 +/// 环节(课程)列表页标题栏
9 class SectionHeaderWidget extends StatelessWidget { 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 final String? title; 14 final String? title;
13 15