import 'package:flutter_bloc/flutter_bloc.dart'; import '../../domain/usecase/login_usecase.dart'; import '../event/auth_event.dart'; import '../state/auth_state.dart'; class PhoneAuthBloc extends Bloc { final LoginUseCase _loginUseCase; PhoneAuthBloc(this._loginUseCase) : super(PhoneAuthState.initial()) { on((event, emit) { emit(state.copyWith(phone: event.phone)); }); on((event, emit) { emit(state.copyWith(isAdult: event.isAdult)); }); on((event, emit) { emit(state.copyWith(privacyAccepted: event.accepted)); }); on(_onSubmitPhonePressed); } Future _onSubmitPhonePressed( SubmitPhonePressed event, Emitter emit, ) async { if (state.isSubmitting) return; final phone = state.phone; final isAdult = state.isAdult; final privacyAccepted = state.privacyAccepted; if (phone.isEmpty || !isAdult || !privacyAccepted) { emit(state.copyWith(error: "Пожалуйста, заполните все поля.")); return; } emit(state.copyWith(isSubmitting: true, error: null)); //готовы отправить данные, вызываем юзкейс try { final tempToken = await _loginUseCase.execute('+375$phone'); print("TOKEN ON PRESENTATION LAYER: $tempToken"); emit(state.copyWith(isSubmitting: false, isSuccess: true)); } catch (e) { emit(state.copyWith(isSubmitting: false, error: e.toString())); } } }