剛開始學前端的時候看到你們都是用的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的過程當中,踩到的坑,總結出了 三種錯誤類型 和 一種界面調試方法。
學習過程當中,不斷髮現本身的不足,就能找到提高本身的空間;常常總結,昇華方法論,就能不斷提高本身。