Blame view

lib/pages/unit/view.dart 4.51 KB
2a3621f8   吴启风   feat:课程层级调整(增加unit层)
1
2
3
4
  import 'package:flutter/material.dart';
  import 'package:flutter_bloc/flutter_bloc.dart';
  import 'package:flutter_screenutil/flutter_screenutil.dart';
  import 'package:wow_english/pages/unit/state.dart';
2a3621f8   吴启风   feat:课程层级调整(增加unit层)
5
  import 'package:wow_english/pages/unit/widget/course_unit_item.dart';
2187c85f   吴启风   feat:课程结构调整
6
  import 'package:wow_english/pages/unit/widget/home_tab_header_widget.dart';
2a3621f8   吴启风   feat:课程层级调整(增加unit层)
7
  import 'package:wow_english/route/route.dart';
025d8543   biao   首页gametime播放修改
8
  import 'package:wow_english/utils/audio_player_util.dart';
2a3621f8   吴启风   feat:课程层级调整(增加unit层)
9
10
11
12
13
14
15
  
  import '../../models/course_module_entity.dart';
  import '../../models/course_unit_entity.dart';
  import '../../utils/toast_util.dart';
  import 'bloc.dart';
  import 'event.dart';
  
e620143b   吴启风   feat:单元&课程解锁状态蒙层ui
16
  // 课程(单元)列表页(多unit,参考口语星球的框或分割标志)
2a3621f8   吴启风   feat:课程层级调整(增加unit层)
17
  class UnitPage extends StatelessWidget {
2187c85f   吴启风   feat:课程结构调整
18
    const UnitPage({super.key, this.courseModuleEntity});
2a3621f8   吴启风   feat:课程层级调整(增加unit层)
19
20
  
    /// 模块
2187c85f   吴启风   feat:课程结构调整
21
    final CourseModuleEntity? courseModuleEntity;
2a3621f8   吴启风   feat:课程层级调整(增加unit层)
22
23
24
25
  
    @override
    Widget build(BuildContext context) {
      return BlocProvider(
2187c85f   吴启风   feat:课程结构调整
26
        create: (BuildContext context) => UnitBloc(courseModuleEntity)
b1869cf8   biao   背景音乐添加
27
          ..add(UnitInitEvent())
2187c85f   吴启风   feat:课程结构调整
28
          ..add(RequestUnitDataEvent(courseModuleEntity?.id)),
2a3621f8   吴启风   feat:课程层级调整(增加unit层)
29
30
31
32
33
34
35
36
37
38
39
40
41
42
        child: Builder(builder: (context) => _buildPage(context)),
      );
    }
  
    Widget _buildPage(BuildContext context) {
      return BlocBuilder<UnitBloc, UnitState>(builder: (context, state) {
        final bloc = BlocProvider.of<UnitBloc>(context);
        return Scaffold(
          body: Container(
            color: Colors.white,
            child: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
2187c85f   吴启风   feat:课程结构调整
43
44
                  HomeTabHeaderWidget(
                    courseModuleCode: bloc.getCourseModuleCode(),
e6a08b82   biao   修复兑换之后回到首页不刷新问题;修...
45
                    onBack: () {
b1869cf8   biao   背景音乐添加
46
47
                      AudioPlayerUtil.getInstance()
                          .playAudio(AudioPlayerUtilType.touch);
e6a08b82   biao   修复兑换之后回到首页不刷新问题;修...
48
49
                      popPage(data: {'exchange': bloc.exchangeResult});
                    },
2187c85f   吴启风   feat:课程结构调整
50
51
52
53
                    actionTap: (HeaderActionType type) {
                      bloc.headerActionEvent(type);
                    },
                  ),
2a3621f8   吴启风   feat:课程层级调整(增加unit层)
54
                  Expanded(
2187c85f   吴启风   feat:课程结构调整
55
56
57
58
59
60
61
62
63
64
                    child: Container(
                        margin: EdgeInsets.symmetric(horizontal: 12.w),
                        child: ListView.builder(
                            itemCount:
                                bloc.unitData?.courseUnitVOList?.length ?? 0,
                            scrollDirection: Axis.horizontal,
                            itemBuilder: (BuildContext context, int index) {
                              CourseUnitDetail? data =
                                  bloc.unitData?.courseUnitVOList?[index];
                              return GestureDetector(
2d1ead53   吴启风   feat:背景音播放优化
65
                                onTap: () async {
2187c85f   吴启风   feat:课程结构调整
66
                                  if (data.lock == true) {
009cf00d   吴启风   feat:环节&单元解锁逻辑
67
                                    showToast('当前单元课程暂未解锁');
2187c85f   吴启风   feat:课程结构调整
68
69
                                    return;
                                  }
2d1ead53   吴启风   feat:背景音播放优化
70
                                  // await AudioPlayerUtil.getInstance().pause();
2187c85f   吴启风   feat:课程结构调整
71
72
73
                                  pushNamed(AppRouteName.courseSection,
                                      arguments: {
                                        'courseUnitEntity': bloc.unitData,
66a7e3e7   吴启风   feat:退出课堂和结束课堂优化
74
                                        'courseUnitId': data.id
0cbdbb34   吴启风   feat:环节列表页返回单元列表页...
75
                                      }).then((value) {
b1869cf8   biao   背景音乐添加
76
77
                                    AudioPlayerUtil.getInstance()
                                        .playAudio(AudioPlayerUtilType.inMyTummy);
0cbdbb34   吴启风   feat:环节列表页返回单元列表页...
78
                                    if (value != null) {
e6a08b82   biao   修复兑换之后回到首页不刷新问题;修...
79
80
                                      Map<String, dynamic> dataMap =
                                          value as Map<String, dynamic>;
0cbdbb34   吴启风   feat:环节列表页返回单元列表页...
81
82
                                      bool needRefresh = dataMap['needRefresh'];
                                      if (needRefresh) {
e6a08b82   biao   修复兑换之后回到首页不刷新问题;修...
83
84
                                        bloc.add(RequestUnitDataEvent(
                                            courseModuleEntity?.id));
0cbdbb34   吴启风   feat:环节列表页返回单元列表页...
85
86
87
                                      }
                                    }
                                  });
2187c85f   吴启风   feat:课程结构调整
88
89
90
91
92
93
94
95
                                },
                                child: CourseUnitItem(
                                  unitEntity: bloc.unitData!,
                                  unitLesson: data!,
                                ),
                              );
                            })),
                  ),
2a3621f8   吴启风   feat:课程层级调整(增加unit层)
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
                  SafeArea(
                    child: Column(
                      children: [
                        6.verticalSpace,
                      ],
                    ),
                  )
                ],
              ),
            ),
          ),
        );
      });
    }
  }