小编hma*_*des的帖子

使用 bloc.emit 从块发出状态

我正在使用具有 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 …

flutter bloc

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

bloc ×1

flutter ×1