Olá, Giuseppe! Tudo bem?
Primeiramente quero te pedir desculpas pela demora em dar um retorno.
A forma como implementei isso foi utilizando o BlocListener
dentro do TransactionFormContainer
, assim, eu faço duas condições: uma para quando o estado é SentState
e outra FatalErrorTransactionFormState
, quando é enviada a transação eu apresento o dialog de sucesso e quando tenho um erro fatal apresento o dialog de erro.
Abaixo, o bloco com o Listener:
BlocListener<TransactionFormCubit, TransactionFormState>(
listener: (context, state) {
if (state is SentState) {
_showSuccessfullMessage(context);
}
if (state is FatalErrorTransactionFormState) {
_showFailureMessage(context, state.message);
}
},
child: TransactionForm(_contact),
),
Agora, o TransactionFormContainer
completo:
class TransactionFormContainer extends BlocContainer {
final Contact _contact;
const TransactionFormContainer(this._contact, {super.key});
@override
Widget build(BuildContext context) {
return BlocProvider<TransactionFormCubit>(
create: (buildContext) {
return TransactionFormCubit();
},
child: BlocListener<TransactionFormCubit, TransactionFormState>(
listener: (context, state) {
if (state is SentState) {
_showSuccessfullMessage(context);
}
if (state is FatalErrorTransactionFormState) {
_showFailureMessage(context, state.message);
}
},
child: TransactionForm(_contact),
),
);
}
}
Além disso, dentro do nosso response_dialog.dart
, adicionei mais uma instrução de navigator.pop(context)
, para que ao apertar o botão de "ok", voltasse para a tela com a lista de contatos:
onPressed: () {
Navigator.pop(context);
Navigator.pop(context);
},
Essa é apenas uma forma de fazer isso, devem existir outras formas, talvez mais complexas ou elegantes, mas você pode tentar esta, para começar.
Espero que isso te ajude de alguma forma, bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado. ✓