You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

70 lines
2.3 KiB

import 'dart:async';
import 'package:bloc/bloc.dart';
import 'package:go_router/go_router.dart';
import 'package:hadi_hoda_flutter/core/params/no_params.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/features/intro/domain/usecases/extract_data_usecase.dart';
import 'package:hadi_hoda_flutter/features/intro/domain/usecases/loading_stream_usecase.dart';
import 'package:hadi_hoda_flutter/features/intro/domain/usecases/save_levels_usecase.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';
class IntroBloc extends Bloc<IntroEvent, IntroState> {
/// ------------constructor------------
IntroBloc(
this._saveLevelsUseCase,
this._extractDataUseCase,
this._loadingStreamUseCase,
) : super(const IntroState()) {
on<SaveLevelsEvent>(_saveLevelsEvent);
on<ExtractDataEvent>(_extractDataEvent);
loadingStream = _loadingStreamUseCase();
}
/// ------------UseCases------------
final SaveLevelsUseCase _saveLevelsUseCase;
final ExtractDataUseCase _extractDataUseCase;
final LoadingStreamUseCase _loadingStreamUseCase;
/// ------------Variables------------
Stream<double> loadingStream = Stream.empty();
/// ------------Controllers------------
/// ------------Functions------------
/// ------------Api Calls------------
FutureOr<void> _saveLevelsEvent(SaveLevelsEvent event,
Emitter<IntroState> emit) async {
await _saveLevelsUseCase(NoParams()).then(
(value) {
value.fold(
(data) async {
add(ExtractDataEvent());
},
(error) {},
);
},
);
}
FutureOr<void> _extractDataEvent(ExtractDataEvent event,
Emitter<IntroState> emit) async {
await _extractDataUseCase(NoParams()).then(
(value) {
value.fold(
(data) async {
await Future.delayed(
Duration(seconds: 1), () {
ContextProvider.context!.goNamed(Routes.homePage);
},
);
},
(error) {},
);
},
);
}
}