Flutter实战指南
上QQ阅读APP看书,第一时间看更新

3.3 处理逻辑错误

现在学习一下如何处理逻辑错误。什么是逻辑错误呢?在news_manager.dart中的_addNews()方法中,可能由于一时疏忽,忘记调用setState()方法。这样的错误不会产生提示,因为是忘记了添加内容。保存并重启应用,没有任何错误提示,但如果单击添加资讯按钮,什么事情都没有发生,这时我们意识到可能是哪里出错了,然而却没有任何错误提示。应用并没有按照我们想要的效果显示,这就是逻辑错误。也是最难发现的错误,因为App运行正常,而且没有错误提示。

如何调试这样的逻辑错误呢?一种方法是查看代码,我们自己最清楚单击按钮时应该发生什么,所以首先检查单击按钮是否调用了正确的方法,同时检查是否传递了正确的数据,然而并没有发现问题。

再检查_addNews()方法,快速核对一下这个_news列表是否更新了,可以打印一条语句,代码如下:

print()方法不会在模拟器上显示任何内容,所以我们把print()方法叫作调试工具。保存重新加载后,在控制台中显示的内容一切正常,所以问题不在这里。这时应该想到是不是Flutter没有意识到这里的改变?我们在这里添加setState()方法,解决了这个问题。这种代码跟踪的方式可以解决像这样的逻辑错误。但有些时候可能会很难,因为代码可能会很复杂,所以下一节我们学习如何使用断点来调试。