Files
feature-next-arch/lib/features/auth/presentation/bloc/login_cubit.dart
2026-01-18 20:21:14 +08:00

32 lines
944 B
Dart

import 'package:flutter_bloc/flutter_bloc.dart';
import '../../domain/usecases/login_usecase.dart';
import 'auth_cubit.dart';
import 'login_state.dart';
class LoginCubit extends Cubit<LoginState> {
final LoginUseCase loginUseCase;
final AuthCubit authCubit;
LoginCubit(this.loginUseCase, this.authCubit) : super(LoginInitial());
/// Login
/// @param username 用户名
/// @param password 密码
/// @param sourceType 登录来源: 1:web; 2:mobile; 3:mini_programs; 4:pc
Future<void> login(String username, String password, sourceType) async {
emit(LoginLoading());
try {
final result = await loginUseCase.call(
LoginParams(username, password, sourceType),
);
result.fold((failure) => emit(LoginFailure(failure.message)), (user) {
emit(LoginSuccess(user));
authCubit.loginSuccess(user);
});
} catch (e) {
emit(LoginFailure(e.toString()));
}
}
}