import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:flutter/cupertino.dart'; import 'package:go_router/go_router.dart'; import 'package:hadi_hoda_flutter/core/constants/my_constants.dart'; import 'package:hadi_hoda_flutter/core/routers/my_routes.dart'; import 'package:hadi_hoda_flutter/core/utils/context_provider.dart'; import 'package:hadi_hoda_flutter/core/utils/local_storage.dart'; import 'package:hadi_hoda_flutter/features/intro/presentation/bloc/intro_event.dart'; import 'package:hadi_hoda_flutter/features/intro/presentation/bloc/intro_state.dart'; import 'package:hadi_hoda_flutter/features/intro/presentation/ui/screens/intro_1_screen.dart'; import 'package:hadi_hoda_flutter/features/intro/presentation/ui/screens/intro_2_screen.dart'; import 'package:hadi_hoda_flutter/features/intro/presentation/ui/screens/intro_3_screen.dart'; import 'package:hadi_hoda_flutter/features/intro/presentation/ui/screens/intro_4_screen.dart'; import 'package:hadi_hoda_flutter/features/intro/presentation/ui/screens/intro_5_screen.dart'; class IntroBloc extends Bloc { /// ------------constructor------------ IntroBloc() : super(const IntroState()){ on(_changeIntroEvent); } /// ------------UseCases------------ /// ------------Variables------------ final List intros = [ Intro1Screen(key: Key('0')), Intro2Screen(key: Key('1')), Intro3Screen(key: Key('2')), Intro4Screen(key: Key('3')), Intro5Screen(key: Key('4')), ]; /// ------------Controllers------------ /// ------------Functions------------ Future goToLevelPage() async { await LocalStorage.saveData(key: MyConstants.firstIntro, value: 'true'); if (ContextProvider.context.mounted) { ContextProvider.context.replaceNamed(Routes.levelPage); } } /// ------------Api Calls------------ FutureOr _changeIntroEvent(ChangeIntroEvent event, Emitter emit) async { if (state.currentIntro < intros.length - 1) { emit(state.copyWith(currentIntro: state.currentIntro + 1)); } else { goToLevelPage(); } } }