本篇為Flutter教程系列第一篇,先整體介紹一下Flutter,旨在讓您對Flutter有一個全域性感性的認識。如果您還想了解更多,可以去[Flutter中文網](https://flutterchina.club/) 瞭解更多。後續教程將陸續釋出,如果您對Flutter感興趣,歡迎關注我的部落格。
Flutter是什麼?
Flutter是谷歌的移動UI框架,可以快速在iOS和Android上構建高質量的原生使用者介面。 Flutter可以與現有的程式碼一起工作。在全世界,Flutter正在被越來越多的開發者和組織使用,並且Flutter是完全免費、開源的。簡單來說,Flutter是一款移動應用程式SDK,包含框架、控制元件和一些工具,可以用一套程式碼同時構建Android和iOS應用,並且效能可以達到原生應用一樣的效能。詳情請參考Flutter簡介 。
Flutter和React-Native、Weex這樣的動態化框架有什麼不同?
React-Native、Weex核心是通過Javascript開發,執行時需要Javascript直譯器,UI是通過原生控制元件渲染。Flutter與用於構建移動應用程式的其它大多數框架不同,因為Flutter既不使用WebView,也不使用作業系統的原生控制元件。 相反,Flutter使用自己的高效能渲染引擎來繪製widget。Flutter使用C、C ++、Dart和Skia(2D渲染引擎)構建。在IOS上,Flutter引擎的C/C ++程式碼使用LLVM編譯,任何Dart程式碼都是AOT編譯為原生程式碼的,Flutter應用程式使用本機指令集執行(不涉及直譯器)。而在Android下,Flutter引擎的C/C ++程式碼是用Android的NDK編譯的,任何Dart程式碼都是AOT編譯成原生程式碼的,Flutter應用程式依然使用本機指令集執行(不涉及直譯器)。因此,Flutter能達到原生應用一樣的效能。
同時,Flutter提供了一組自己的widget),由Flutter的framework和引擎管理和渲染。您可以瀏覽Flutter widget的目錄。之所以不適用原生控制元件,是因為Flutter希望最終結果是更高質量的,如果Flutter使用原生系統widget,Flutter應用的質量和效能將受到這些widget本身質量的限制。例如,在Android中,有一組硬編碼的手勢和固定的規則來對它們進行手勢衝突消歧。在Flutter中,您可以編寫自己的手勢識別器,該手勢識別器是手勢系統中的一級參與者 。此外,由不同人撰寫的兩個小工具可協調手勢衝突消歧。
Flutter用什麼語言開發?
Flutter 用Dart作為開發框架和widget的語言,詳情請參考為什麼Flutter選擇使用Dart語言 。
Dart語言好學嗎?
如果你有程式設計經驗,尤其是瞭解Java或Javascript, 那麼你回發現Dart學習起來非常容易,筆者只用了兩個小時基本就開始愉快的使用Dart編碼了。Flutter中文網編輯了一份可以幫助您快速學習Dart的Dart語言資源列表,希望對你有用。
Flutter支援像webpack一樣“熱過載”或者Android “instant run”嗎?
支援,Flutter支援Hot Reload,通過將更新的原始碼檔案注入正在執行的Dart VM(虛擬機器)中工作。這不僅包括新增新類,還包括向現有類新增方法和欄位,以及更改現有函式。詳情請參閱Flutter熱過載 。
對於程式設計師/開發人員來說,要使用Flutter必須具備哪些經驗?
Flutter對熟悉物件導向概念(類、方法、變數等)和指令式程式設計概念(迴圈、條件等)的程式設計師來說是很容易入門的。學習和使用Flutter,無需事先具有移動開發經驗。 我們已經看到了一些不怎麼有程式設計經驗的人學習並使用Flutter進行原型設計和應用程式開發。
可以在我現有的原生應用程式中使用Flutter嗎?
可以,您可以在現有的Android或iOS應用中嵌入Flutter。詳情請參考原生應用程式中使用Flutter 。
Flutter支援檔案讀取、發起網路請求嗎?
支援!詳情請參考:
我在哪裡可以獲得Flutter學習資源?
您可以去谷歌Flutter官網,但是,現在也可以訪問Flutter中文網了,Flutter中文網 上提供了官方文件翻譯和一些其它案例、資源,您也可以去Github 上Flutter專案主頁,去檢視最新動態和提issue.
本文參考文件:Flutter中文網-Flutter FAQ .