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(builder: (context, state) { final bloc = BlocProvider.of(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, ], ), ) ], ), ), ), ); }); } }