#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 после статуса успеха.