Para que o exercício final funcionasse tive que trocar Navigator.pop(context) por:
_webClient
.save(transactionCreated, password)
.then((transaction) {
if (transaction != null) {
Navigator.of(context).pop();
}
});
Da forma original era apresentado o erro: Looking up a deactivated widget's ancestor is unsafe.