嘗試寫Flutter也有幾周了, 期間遇到了不少坑, 有的是Flutter尚未完善的需要官方來填, 有的則需要自己來解決, 下面跟大家分享一下自己遇到的幾個問題和相應(yīng)的解決辦法.
1. 編輯器強烈建議使用Android Studio
VS Code是我個人非常喜愛的代碼編輯器. 美觀垦页、簡潔、快速. 但是至少目前, 我還是建議你使用谷歌親兒子Android Studio來開發(fā)Flutter. VS Code的Flutter插件已經(jīng)相當(dāng)強大, 但Android Studio上的Flutter插件顯然更加強大, 功能也更為豐富. 最重要的是, 目前的Flutter還不夠穩(wěn)定(尤其是熱加載).
當(dāng)使用VS Code熱加載失效時, 你只能重新編譯運行, 這其中還包括pod更新和Xcode重新編譯, 過程相當(dāng)緩慢. 但使用Android Studio, 你可以通過點擊綠色的箭頭進行“冷加載”.沒有Xcode編譯過程, app甚至都沒有重啟, 你的項目又恢復(fù)了正常!
需要注意的是, 如果你安裝并引用了新的第三方庫, 還是需要乖乖重新編譯應(yīng)用.這個時候不重啟應(yīng)用雖然能夠跑起來, 但會出現(xiàn)各種問題.
2. 永久更新PATH變量
這件事情應(yīng)該很早就要做了, 尤其是國內(nèi)網(wǎng)絡(luò)不好的緣故, 更需要第一時間使用鏡像網(wǎng)站. 官網(wǎng)對于.bash_profile的介紹不是很詳細, 我就以Mac為例詳細講解一下.
cd ~ //進入當(dāng)前用戶目錄
touch .bash_profile //新建.bash_profile文件(如果不存在的話)
open -e .bash_profile //用記事本打開.bash_profile文件
source .bash_profile //更新剛配置的環(huán)境變量
首先進入用戶主目錄, 新建.bash_profile文件, 打開, 添加三句話
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export PATH=PATH_TO_FLUTTER_GIT_DIRECTORY/flutter/bin:$PATH
前兩句是替換鏡像網(wǎng)站,第三句是添加PATH變量, PATH_TO_FLUTTER_GIT_DIRECTORY要改為Flutter在本地的路徑, 比如我自己的:
/Users/jihongbo/development/flutter/bin:$PATH
教大家一個好方法, 在目錄上右擊彈出菜單, 此時按住option健, 會出現(xiàn)“將XXX拷貝為路徑名稱”, 這時就可以直接粘貼用了.
注意: 后面不要加任何符號, 比如//注釋等等. =前后沒有空格(被坑好久)
最后更新一下配置就OK了. 編輯器也要重啟一下一并更新終端配置.
3. 資源管理 pubspec.yaml
pubspec.yaml很像iOS的podfile或者Node.js的package.json, 是專門用來管理第三方庫的. 但同時他也擔(dān)負著管理資源(圖片蛾狗、字體)的任務(wù).
看過教程的我們都知道添加圖片字體只需要在文件中加入類似下面的代碼.
fonts:
- family: flyou
fonts:
- asset: fonts/fa-solid-900.ttf
但請注意, 他們的縮進關(guān)系一定要正確, 否則會編譯失敗. 猜測pubspec.yaml是根據(jù)名稱以及縮進關(guān)系來組織字體信息的, 但這種方式遠不如JSON來的直觀.
4. 對iOS開發(fā)不夠友好
最容易上手Flutter的要數(shù)Android開發(fā)了, 原因很簡單, 都是一個爸爸生的. 從默認的Material Design風(fēng)格, 到連名字都一毛一樣的控件, 連看API的功夫都省了, 閉著眼睛都能猜到想要的控件名稱. 其次就是前端開發(fā), 因為Flutter的核心與React以及Vue非常相似, 理解起來得心應(yīng)手, Dart與ES6又有著極為相似的語法. 而對于iOS開發(fā)而言, 需要去啃API文檔, 需要去理解數(shù)據(jù)單向傳遞的概念, 需要去理解swift還沒有發(fā)布的異步特性...
但是反過來說, 上面提到的這些新的特性都是目前最新最熱的技術(shù), 即便現(xiàn)在不學(xué)習(xí), 往后肯定也會需要用到. iOS開發(fā)環(huán)境相對前端甚至安卓來說都太安逸了, 產(chǎn)生技術(shù)爆炸點的頻率相當(dāng)?shù)? 但我們不能因此拘泥于現(xiàn)有的技術(shù)而停滯不前.
所以一起加油吧!