if(transaction != null){
  showDialog(context: context, builder: (contextDialog) {
    return SuccessDialog('successful transaction');
  }).then((value) => Navigator.pop(context));
  Navigator.pop(context);
}Acredito que a chamada do Navigator.pop(context) deveria estar dentro do then, caso contrário, o dialog é escondido assim que é mostrado.
if(transaction != null){
  showDialog(context: context, builder: (contextDialog) {
    return SuccessDialog('successful transaction');
  }).then((value) {
  Navigator.pop(context);
  Navigator.pop(context);
  });
}Pra mim, dessa forma acima funcionou.
 
            