如何修复此错误:StateError(错误状态:在没有注册事件处理程序的情况下调用 add(SignUp Button Pressed)。请确保通过 on((event, eager) {...})) 注册处理程序
注册区块:
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import '../../domain/repositories/user_repository.dart';
part 'sign_up_event.dart';
part 'sign_up_state.dart';
class SignUpBloc extends Bloc<SignUpEvent, SignUpState> {
final UserRepository userRepository;
SignUpBloc({required this.userRepository}) : super(SignUpInitial());
@override
Stream<SignUpState> mapEventToState(SignUpEvent event) async* {
if (event is SignUpButtonPressed) {
yield SignUpLoading();
try {
final email = event.email;
final password = event.password;
final result = await userRepository.registerUser(email, password);
yield result.fold(
(failure) => SignUpError(message: failure.toString()),
(user) => SignUpSuccess(email: user.email),
);
} catch (error) {
yield SignUpError(message: error.toString());
}
}
}
}
根据您的错误,我有另一种使用 bloc 的方法
handler via on((event, emit) {...}))
on<SignUpEvent>((event, emit) async {
emit(SignUpLoading());
try {
final email = event.email;
final password = event.password;
final result = await userRepository.registerUser(email, password);
await result.fold(
(failure) async => SignUpError(message: failure.toString()),
(user) async => SignUpSuccess(email: user.email),
);
} catch (error) {
emit(SignUpError(message: error.toString()));
}
});