刚开始学前端的时候看到你们都是用的console.log()做为调试的手段,也能够说,不少人只会用console.log()。在学习Flutter开发app的时候,我就在思考,除了使用print()来调试,Flutter还提供了哪些更为高效的调试方法呢?前端
很是不幸的是,我在开发本身的第一款Flutter App时,就几乎将全部可能遇到的错误类型都踩到了,这也让我意识到我须要对这部分知识作出总结,扩充本身的武器库,提高本身的开发效率。数组
我将本身遇到的错误类型归 语法和代码错误 、 运行时错误 和 逻辑错误 三大类,同时还从官方文档总结了 界面调试 的技巧,分享给你们。bash
语法和代码错误是一种比较低级的错误,指的是在编写代码过程当中,IDE就已经显示出来的警告或者错误信息。若是咱们不修复它,在保存代码的以后,IDE就不会编译代码并推送到设备上。app
解决办法很简单,就是经过阅读红线上的错误信息,而后分析本身的代码哪里出错了。在Flutter的开发过程当中,有以下几种典型错误,能够说是新手必犯,若是你跟我同样,把这些错误类型都踩了个遍,那么说明你还处于入门阶段。框架
import 'package:flutter/material.dart';
,其它.dart文件就不须要了。运行时错误是指,编写代码过程当中不会出现,可是当App运行时,就会将错误信息打印在App中(例如黄色警告条、红屏)以及控制台里。这些错误信息会告诉你哪里出现了错误,以及出错后该如何修复。ide
修复运行时错误的一大难点就是,不懂得如何阅读错误日志。我根据本身遇到的运行时错误,划分了两大类,并总结了相应的排查方法。函数
逻辑错误是指,在App运行过程当中,App没有出现上述的任何运行时错误或者崩溃,可是App上的运行结果并不符合咱们的预期。工具
这类错误一般难以定位,最多见的解决办法就是,找到相应业务的代码,检查方法的调用、数值的计算或者是参数的传递是否有问题。若是没法经过这种简单的方法排查问题,那么就要开始使用Flutter的调试工具了。布局
以个人真实案例举例:post
addResult(result) {
// 我没有意识到须要调用this.setState()才能更新数据到界面
results.add(result);
}
复制代码
个人初步判断是,addResult函数没有被调用,可是当我添加了print函数以后,打脸了
addResult(result) {
results.add(result);
print(results);
// 打印结果显示,addResult函数被调用了,并且results数组也新增长了成员
}
复制代码
print函数可以将任何对象打印到调试控制台中,在Flutter框架里,大部分的类都实现了toString函数(如例子里的List对象),能够很方便快速地排查这些小问题。
不少人不经常使用断点调试,是由于他们以为使用起来很麻烦。实际上在VS Code中,Flutter的断点调试开启只须要两步:
在Flutter框架中,有一个颇有用的界面调试工具,那就是Debug Painting,便可以给界面绘制布局边界。
在VS Code中,开启该绘制功能十分简单,只须要在Flutter App调试的过程当中,打开命令面板(cmd+shift+p),输入Flutter Toggle Debug Painting
内容不少,最后总结一下,本文根据我以前开发计算器App的过程当中,踩到的坑,总结出了 三种错误类型 和 一种界面调试方法。
学习过程当中,不断发现本身的不足,就能找到提高本身的空间;常常总结,升华方法论,就能不断提高本身。