我正在使用具有 BLoC 模式的库构建一个电话身份验证 ui (OTP) firebase_auth(对于这个 ui 来说有点过大,但整个项目都在 BLoC 中,所以)。我正在 BLoC 内处理身份验证,如下所示:
@override
Stream<PhoneAuthState> mapEventToState(PhoneAuthEvent event) async* {
....
else if(event is PhoneNumberSubmittedEvent) yield* _handlePhoneNumberSubmittedEvent(event);
....
}
Stream<PhoneAuthState> _handlePhoneNumberSubmittedEvent(PhoneNumberSubmittedEvent event) async*{
yield SendingCodeState();
await Firebase.initializeApp();
var firebaseAuth = FirebaseAuth.instance;
await firebaseAuth.verifyPhoneNumber(
phoneNumber: _buildPhoneNumber(),
timeout: Duration(seconds: 0),
verificationCompleted: (firebaseUser) {},
codeAutoRetrievalTimeout: (String verificationId) {},
// Relevant code
codeSent: (id, [forceResendingToken]) =>
emit(_codeSentState(id, forceResendingToken)),
verificationFailed: (error) =>
emit(_verificationFailedState(error)),
);
}
Run Code Online (Sandbox Code Playgroud)
_codeSentState因为 my和函数的结果_verificationFailedState无法从方法内部产生handlePhoneNumberSubmittedEvent,所以我使用了emit(实际上工作正常)。
然而,当我查看 BLoC …