Blame view

lib/pages/unit/view.dart 3.03 KB
2a3621f8   吴启风   feat:课程层级调整(增加unit层)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
  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';
  import 'package:wow_english/pages/unit/widget/course_unit_header_widget.dart';
  import 'package:wow_english/pages/unit/widget/course_unit_item.dart';
  import 'package:wow_english/route/route.dart';
  
  import '../../models/course_module_entity.dart';
  import '../../models/course_unit_entity.dart';
  import '../../utils/toast_util.dart';
  import 'bloc.dart';
  import 'event.dart';
  
  class UnitPage extends StatelessWidget {
    const UnitPage({super.key, required this.courseEntity});
  
    /// 模块
    final CourseModuleEntity courseEntity;
  
    @override
    Widget build(BuildContext context) {
      return BlocProvider(
        create: (BuildContext context) =>
            UnitBloc()..add(RequestUnitDataEvent(courseEntity.id)),
        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: [
                  CourseUnitHeaderWidget(entity: courseEntity),
                  Expanded(
                      child: ListView.builder(
                          itemCount:
                              bloc.modelData?.courseUnitVOList?.length ?? 0,
                          scrollDirection: Axis.horizontal,
                          itemBuilder: (BuildContext context, int index) {
                            CourseUnitDetail? data =
                                bloc.modelData?.courseUnitVOList?[index];
                            return GestureDetector(
                              onTap: () {
                                if (data.lock == true) {
                                  showToast('当前unit暂未解锁');
                                  return;
                                }
  
                                ///进入课堂
                                pushNamedAndRemoveUntil(
                                    AppRouteName.home, (route) => route.isFirst,
                                    arguments: {
                                      'moduleId': data.courseModuleId,
                                      'unitId': data.id
                                    });
                              },
                              child: CourseUnitItem(
                                unitEntity: bloc.modelData!,
                                unitLesson: data!,
                              ),
                            );
                          })),
                  SafeArea(
                    child: Column(
                      children: [
                        6.verticalSpace,
                      ],
                    ),
                  )
                ],
              ),
            ),
          ),
        );
      });
    }
  }