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 { 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 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())); } } }