1111
This commit is contained in:
40
lib/presentation/blocs/login/login_bloc.dart
Normal file
40
lib/presentation/blocs/login/login_bloc.dart
Normal file
@@ -0,0 +1,40 @@
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import '../../../domain/usecases/login_usecase.dart';
|
||||
import 'login_event.dart';
|
||||
import 'login_state.dart';
|
||||
|
||||
class LoginBloc extends Bloc<LoginEvent, LoginState> {
|
||||
final LoginUseCase loginUseCase;
|
||||
|
||||
LoginBloc({required this.loginUseCase}) : super(const LoginInitial()) {
|
||||
on<LoginSubmitted>(_onLoginSubmitted);
|
||||
on<LoginReset>(_onLoginReset);
|
||||
}
|
||||
|
||||
Future<void> _onLoginSubmitted(
|
||||
LoginSubmitted event,
|
||||
Emitter<LoginState> emit,
|
||||
) async {
|
||||
emit(const LoginLoading());
|
||||
|
||||
final result = await loginUseCase(event.request);
|
||||
|
||||
result.fold(
|
||||
(failure) => emit(LoginError(failure.message)),
|
||||
(response) {
|
||||
if (response.isSuccess) {
|
||||
emit(LoginSuccess(response));
|
||||
} else {
|
||||
emit(LoginError(response.message));
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
void _onLoginReset(
|
||||
LoginReset event,
|
||||
Emitter<LoginState> emit,
|
||||
) {
|
||||
emit(const LoginInitial());
|
||||
}
|
||||
}
|
||||
22
lib/presentation/blocs/login/login_event.dart
Normal file
22
lib/presentation/blocs/login/login_event.dart
Normal file
@@ -0,0 +1,22 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import '../../../domain/models/login_request.dart';
|
||||
|
||||
abstract class LoginEvent extends Equatable {
|
||||
const LoginEvent();
|
||||
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
class LoginSubmitted extends LoginEvent {
|
||||
final LoginRequest request;
|
||||
|
||||
const LoginSubmitted(this.request);
|
||||
|
||||
@override
|
||||
List<Object> get props => [request];
|
||||
}
|
||||
|
||||
class LoginReset extends LoginEvent {
|
||||
const LoginReset();
|
||||
}
|
||||
35
lib/presentation/blocs/login/login_state.dart
Normal file
35
lib/presentation/blocs/login/login_state.dart
Normal file
@@ -0,0 +1,35 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import '../../../domain/models/login_response_model.dart';
|
||||
|
||||
abstract class LoginState extends Equatable {
|
||||
const LoginState();
|
||||
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
class LoginInitial extends LoginState {
|
||||
const LoginInitial();
|
||||
}
|
||||
|
||||
class LoginLoading extends LoginState {
|
||||
const LoginLoading();
|
||||
}
|
||||
|
||||
class LoginSuccess extends LoginState {
|
||||
final LoginResponseModel response;
|
||||
|
||||
const LoginSuccess(this.response);
|
||||
|
||||
@override
|
||||
List<Object> get props => [response];
|
||||
}
|
||||
|
||||
class LoginError extends LoginState {
|
||||
final String message;
|
||||
|
||||
const LoginError(this.message);
|
||||
|
||||
@override
|
||||
List<Object> get props => [message];
|
||||
}
|
||||
Reference in New Issue
Block a user