view.dart
3.03 KB
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,
],
),
)
],
),
),
),
);
});
}
}