我正在创建一个基于费用跟踪器教程的里程跟踪应用程序。我正试图创建 _submitMileageData() 函数,并进行检查以确保至少选择了标题、起始里程和日期。我不关心enteredEndingMiles 是空还是 999999。大多数情况下,它很可能是空的,并将在一天结束时输入并使用编辑功能进行更新。
问题是,当我执行 widget.onAddMileage 部分时,我在 _endingMilesController.text 下看到红线。我尝试了所有能想到的方法来将其转换为双精度数,但似乎找不到正确的代码组合来执行此操作。我甚至尝试创建“final endingMilesIsValid = confirmedEndingMiles == null ...”,然后开始出现布尔错误。我尝试通过在错误检查后添加 else 语句来纠正此问题,该语句基本上表示如果结束英里数为空,则返回。只要它在一天结束时以双精度数返回,以便可以计算总英里数,这就是我所关心的。
不过,我说得够多了...因为我确信我可能甚至没有正确解释这一点,因为我的大脑已经很混乱了...这是我正在处理的代码块。
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,
),
);
}
我非常感谢任何对此给予我帮助或批评的人。
谢谢!