Tive que fazer o código um pouco diferente da video aula para dar certo, mas se eu deixar os campos nulos ele retonar uma exception:
FormatException (FormatException: Invalid double
)
ElevatedButton(
onPressed: () {
final double valor = double.parse(controladorCampoValor.text);
final int numeroConta = int.parse(controladorCampoNumeroConta.text);
debugPrint('Numero da conta: $numeroConta');
debugPrint('Valor: $valor');
if (numeroConta != null && valor != null) {
Transferencia(valor, numeroConta);
}
},
Estou usando o int.parse porque não consigo utilizar o int.tryParse fica dando erro!
Código da aula está assim:
RaisedButton(
child: Text('Confirmar'),
onPressed: () {
debugPrint('clicou no confirmar');
final int numeroConta = int.tryParse(_controladorCampoNumeroConta);
final double valor = double.tryParse(_controladorCampoValor);
if(numeroConta != null && valor != null){
Transferencia(valor, numeroConta);
}
},
)
Alguém poderia me explicar quan a diferença entre o int.parse e int.tryparse e por que não estou conseguindo ussar o int.tryParse?
Aqui está o código completo da classe:
import 'package:bytebank/transferencia.dart';
import 'package:flutter/material.dart';
class FormularioTransferencia extends StatelessWidget {
final controladorCampoNumeroConta = TextEditingController();
final controladorCampoValor = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Criando Transferência'),
),
body: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: TextField(
controller: controladorCampoNumeroConta,
decoration: const InputDecoration(
label: Text('Número da conta'),
hintText: '0000',
),
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: TextField(
controller: controladorCampoValor,
keyboardType: TextInputType.number,
decoration: const InputDecoration(
label: Text('Valor'),
hintText: '0.00',
icon: Icon(Icons.monetization_on_outlined),
),
),
),
ElevatedButton(
onPressed: () {
final double valor = double.parse(controladorCampoValor.text);
final int numeroConta =
int.parse(controladorCampoNumeroConta.text);
debugPrint('Numero da conta: $numeroConta');
debugPrint('Valor: $valor');
if (numeroConta != null && valor != null) {
Transferencia(valor, numeroConta);
}
},
child: const Text('Confirmar'),
),
],
),
);
}
}