1import 'package:connect/core/localization/app_localizations.dart';
2import 'package:connect/core/router/routes.dart';
3import 'package:connect/features/elearning_v2/domain/entities/course_entity.dart';
4import 'package:flutter/material.dart';
5import 'package:flutter_bloc/flutter_bloc.dart';
6import 'package:flutter_screenutil/flutter_screenutil.dart';
7import 'package:go_router/go_router.dart';
9import '../../../../core/ui/screens/views/faild_to_fetch_data_view.dart';
10import '../../../../core/ui/widgets/custom_scaffold.dart';
11import '../logic/cubit/elearning_v2_cubit.dart';
12import '../widgets/course_card.dart';
18 State<ElearningV2Screen>
createState() => _ElearningV2ScreenState();
21class _ElearningV2ScreenState
extends State<ElearningV2Screen> {
29 context.read<ElearningV2Cubit>().loadCourses();
33 Widget
build(BuildContext context) {
34 return BlocBuilder<ElearningV2Cubit, ElearningV2State>(
35 builder: (context, state) {
36 return CustomScaffold(
38 isLoading: state is LoadingCoursesState,
39 isLeadingVisible:
false,
51 }
else if (state is CoursesLoadingFailureState) {
52 return FailedToFetchDataView(
56 return const SizedBox();
64 crossAxisAlignment: CrossAxisAlignment.start,
66 Image.asset(
'assets/images/banner4.png'),
67 SizedBox(height: 10.sp),
74 style: Theme.of(context).textTheme.bodySmall,
78 gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
80 crossAxisSpacing: 12.r,
81 mainAxisSpacing: 12.r,
82 childAspectRatio: 0.78,
85 itemBuilder: (context, index) {
86 final CourseEntity course = courses[index];
92 Routes.courseDetailsScreen.route,
String translate(String key)
static AppLocalizations of(BuildContext context)
Widget _buildBody(ElearningV2State state)
override void initState()
const ElearningV2Screen({super.key})
Widget _buildCoursesGrid(courses)
abstract class ElearningV2State extends Equatable courses
const CoursesLoadedState(this.courses)
override Widget build(BuildContext context)