1import 'package:aidra_drive/core/ui/theme/color_palette.dart';
2import 'package:aidra_drive/core/ui/widgets/logo_header.dart';
3import 'package:flutter/material.dart';
4import 'package:flutter_bloc/flutter_bloc.dart';
5import 'package:flutter_screenutil/flutter_screenutil.dart';
6import 'package:go_router/go_router.dart';
8import '../../../../core/router/routes.dart';
9import '../../../../core/ui/widgets/custom_scaffold.dart';
10import '../../../../core/ui/widgets/faild_to_fetch_data_view.dart';
11import '../../domain/entities/course_entity.dart';
12import '../logic/cubit/elearning_v2_cubit.dart';
13import '../widgets/course_card.dart';
19 State<ElearningScreen>
createState() => _ElearningScreenState();
22class _ElearningScreenState
extends State<ElearningScreen> {
30 context.read<ElearningV2Cubit>().loadCourses();
34 Widget
build(BuildContext context) {
35 return BlocBuilder<ElearningV2Cubit, ElearningV2State>(
36 builder: (context, state) {
37 return CustomScaffold(
38 isLeadingVisible:
false,
52 }
else if (state is CoursesLoadingFailureState) {
53 return FailedToFetchDataView(
63 padding: EdgeInsets.symmetric(horizontal: 16.r),
65 crossAxisAlignment: CrossAxisAlignment.start,
67 LogoHeader(
title:
'E-Learning'),
68 Image.asset(
'assets/images/banner_2.png'),
74 'No courses available',
75 style: Theme.of(context).textTheme.bodySmall,
79 gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
81 crossAxisSpacing: 12.r,
82 mainAxisSpacing: 12.r,
83 childAspectRatio: 0.78,
86 itemBuilder: (context, index) {
87 final CourseEntity course = courses[index];
92 Routes.courseDetailsScreen.route,
override void initState()
class App extends StatefulWidget build(BuildContext context)
static const antiFlashWhite
const ElearningScreen({super.key})
Widget _buildCoursesGrid(List< CourseEntity > courses)
abstract class ElearningV2State extends Equatable courses
const CoursesLoadedState(this.courses)
style Text( '${ 'scheduling.reference'.tr()}:${collection.internalCode}', style:Theme.of(context).textTheme.bodySmall,)
style SizedBox(height:2.h)
style Column(crossAxisAlignment:CrossAxisAlignment.end, children:[Container(padding:EdgeInsets.symmetric(horizontal:8.w, vertical:4.h), decoration:BoxDecoration(color:ColorPalette.tiffanyBlue.withValues(alpha:0.1), borderRadius:BorderRadius.circular(12),), child:Text(collection.type ?? '', style:Theme.of(context).textTheme.bodySmall?.copyWith(color:ColorPalette.tiffanyBlue, fontWeight:FontWeight.bold,),),),],)