import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:wow_english/common/extension/string_extension.dart'; import 'package:wow_english/home/bloc/home_bloc.dart'; import 'package:wow_english/home/widgets/home_lesson_item_widget.dart'; import 'package:wow_english/home/widgets/home_tab_header_widget.dart'; import 'package:wow_english/route/route.dart'; class HomePage extends StatelessWidget { const HomePage({super.key}); @override Widget build(BuildContext context) { return BlocProvider( create: (context) => HomeBloc(PageController( initialPage: 0, )), child: _HomePageView(), ); } } class _HomePageView extends StatelessWidget { void _headerActionEvent(HeaderActionType type) { if (type == HeaderActionType.video) { Navigator.of(AppRouter.context).pushNamed(AppRouteName.reAfter); } else if (type == HeaderActionType.phase) { Navigator.of(AppRouter.context).pushNamed(AppRouteName.lesson); } else if (type == HeaderActionType.listen) { Navigator.of(AppRouter.context).pushNamed(AppRouteName.listen); } else if (type == HeaderActionType.shop) { Navigator.of(AppRouter.context).pushNamed(AppRouteName.shop); } else { } } @override Widget build(BuildContext context) { return BlocListener( listener: (context, state){}, child: _homeView(), ); } Widget _homeView() => BlocBuilder( builder: (context, state){ final bloc = BlocProvider.of(context); return Scaffold( body: Container( color: Colors.white, child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ HomeTabHeaderWidget( actionTap: (HeaderActionType type) { _headerActionEvent(type); }, ), Expanded( child: PageView.builder( itemCount: 10, controller: bloc.pageController, pageSnapping: false, onPageChanged: (int index) { EasyLoading.showToast(index.toString()); }, itemBuilder: (BuildContext context,int index){ return const HomeLessonItem(); }) , ), SafeArea( child: Padding( padding: EdgeInsets.symmetric(horizontal: 13.w), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ SizedBox( height: 47.h, width: 80.w, ), Container( decoration: BoxDecoration( color: Colors.blue, borderRadius: BorderRadius.circular(14.5.r), ), padding: EdgeInsets.symmetric(vertical: 8.h,horizontal: 24.w), child: Text( '3/67', style: TextStyle( color: Colors.white, fontSize: 12.sp ), ), ), Image.asset( 'blue-positive'.assetPng, height: 47.h, width: 80.w, ), ], ), ), ) ], ), ), ), ); }); }