Ao extrair o código que estava dentro do onPressed
para fora do método build
, tive problemas em manter a SnackBar que faz uso do context
.
Se eu desejar que o métodoonPressed: () => _criaTransferencia()
faça aparecer uma SnackBar, eu preciso passar o context
como parâmetro? Ou seja, onPressed: () => _criaTransferencia(context)
? Se houver outra solução para esse tipo de situação, gostaria de saber.
Segue o código da classe por completo:
class FormularioTransferencia extends StatelessWidget {
final TextEditingController _controladorCampoConta = TextEditingController();
final TextEditingController _controladorCampoValor = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Nova Transferência'),
),
body: Column(
children: <Widget>[
Editor(_controladorCampoConta, '0000', 'Conta',
Icons.account_balance_wallet),
Editor(
_controladorCampoValor, '0.00', 'Valor', Icons.monetization_on),
ElevatedButton(
onPressed: () => _criaTransferencia(context),
child: Text('Confirmar'),
)
],
),
);
}
void _criaTransferencia(BuildContext context) {
final int? conta = int.tryParse(_controladorCampoConta.text);
final double? valor = double.tryParse(_controladorCampoValor.text);
if (valor != null && conta != null) {
debugPrint('TOCOU EM CONFIRMAR');
final Transferencia transferencia = Transferencia(valor, conta);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: const Text('Transferência criada com sucesso')));
debugPrint(transferencia.toString());
}
}
}
Espero que tenha sido claro.
Desde já, agradeço qualquer ajuda.