Estou criando um aplicativo de rastreamento de milhagem baseado em um tutorial para um rastreador de despesas. Estou no ponto em que estou tentando criar a função de _submitMileageData() com uma verificação para garantir que pelo menos um Título, Milhagem Inicial e Data sejam selecionados. Não me importa se enteredEndingMiles é nulo ou é 999999. Na maioria das vezes, provavelmente será nulo e será inserido no final do dia e atualizado usando uma função de edição.
O problema é que, quando eu faço a parte widget.onAddMileage, eu obtenho a linha vermelha sob _endingMilesController.text. Eu tentei tudo que eu posso pensar para convertê-lo para um double, mas eu não consigo encontrar a combinação certa de código para fazer isso. Eu até cheguei a tentar criar um 'final endingMilesIsValid = enteredEndingMiles == null ...' e então comecei a obter um erro booleano. Eu tento retificar isso adicionando uma declaração else após minha verificação de erro basicamente dizendo que se as milhas finais forem nulas, apenas retorne. Contanto que ele retorne como um double no final do dia para que o Total de Milhas possa ser calculado, isso é tudo que me importa.
Mas chega de divagações... tenho certeza de que nem expliquei direito, dado o quão frito está meu cérebro... Aqui está o bloco de código em que estou trabalhando.
void _submitMileageData() {
final enteredStartingMiles = double.tryParse(_startingMilesController.text);
final startingMilesIsInvalid =
enteredStartingMiles == null || enteredStartingMiles <= 0;
if (_titleController.text.trim().isEmpty ||
startingMilesIsInvalid ||
_selectedDate == null) {
showDialog(
context: context,
builder: (ctx) => AlertDialog(
title: Text('Invalid input.'),
content: Text(
'Please make sure a valid title, starting mileage, or date was entered.'),
actions: [
TextButton(
onPressed: () {
Navigator.pop(ctx);
},
child: Text('Ok'),
),
],
),
);
return;
}
widget.onAddMileage(
Mileage(
title: _titleController.text,
startMileage: enteredStartingMiles,
endMileage: _endingMilesController,
date: _selectedDate!,
category: _selectedCategory,
),
);
}
Agradeço qualquer ajuda ou crítica que vier em minha direção com relação a isso.
Obrigado!