Предыдущий вызов блока экрана после открытия нового экрана в Flutter

#flutter #flutter-bloc

#flutter #flutter-блок

Вопрос:

Я использую шаблон блока в своем проекте, но блок моего предыдущего экрана все еще вызывается на моем новом экране. У меня есть удаление моего блока, но в методе удаления экрана не вызывается. Пожалуйста, помогите решить эту проблему.

Файл блока:

 class ForgotPasswordBloc extends Object {
  final PublishSubject<ForgotPassState> _passStateSubject = new PublishSubject();

  Stream<ForgotPassState> get passStateStream => _passStateSubject.stream;

  void changeState({ForgotPassState state}) => _passStateSubject.sink.add(state);

  forgotPasswordSubmit(String email) async {
    changeState(state: ForgotPassState(status: ForgotPassStatus.CALLING, message: "calling"));
    
      var response = await post(Constant.API_URL "forgotPassword", body: {
        "email": email,
      });
      ForgotPasswordModal data = ForgotPasswordModal.fromJson(json.decode(response.body));
      if (data.status == "success") {

        await changeState(state: ForgotPassState(status: ForgotPassStatus.SUCCESS, message: "Success"));
      } else {
        changeState(
            state: ForgotPassState(
                status: ForgotPassStatus.ERROR, message: data.message));
      }
  }

  dispose() {
    print("dispose called==========>");
    _passStateSubject.close();
  }
}
Here I call the bloc method:
 StreamBuilder<ForgotPassState>(
            stream: forgotpass_bloc.passStateStream,
            builder: (context, AsyncSnapshot<ForgotPassState> snapshot) {
              switch (snapshot.data.status) {
                case ForgotPassStatus.SUCCESS:
                  WidgetsBinding.instance.addPostFrameCallback((_) => showInformationDialog(context,email_controller.text.trim()));
                  break;
                default:
                  return Container();
              }
            },
          ),
In above code after getting success response my information dialog is open, In dialog I have close button After click on the close button I have open new Screen but in that screen my previous screen dialog is display.
 

Комментарии:

1. Опубликуйте фрагмент своего кода

Ответ №1:

Я думаю, вам нужно удалить блок в виджете пользовательского интерфейса, где вы создаете экземпляр блока, а не в самом классе блока

Комментарии:

1. Я также размещаю блок в своем виджете пользовательского интерфейса, но это не работает. но я решил проблему, добавив новый статус none после статуса успеха.