Flutter是一款移動(dòng)應(yīng)用程序SDK,一份代碼可以同時(shí)生成iOS和Android兩個(gè)高性能、高保真的應(yīng)用程序。Flutter目標(biāo)是使開(kāi)發(fā)人員能夠交付在不同平臺(tái)上都感覺(jué)自然流暢的高性能應(yīng)用程序。
Flutter框架是一個(gè)分層的結(jié)構(gòu):

Framework 層使用 Dart 實(shí)現(xiàn)
Material 層 包含 Android 風(fēng)格的 Widget ,Cupertino 層 包含 iOS 風(fēng)格的 Widget?
Widgets 層包含 Widget?
Rendering 層包含控制渲染的庫(kù);
Animation 層包含動(dòng)畫的庫(kù);Painting 層包含控制繪制的庫(kù);Gestures 層包含手勢(shì)的庫(kù);
Foundation層 包含基礎(chǔ)庫(kù)(比如確定所屬平臺(tái)Android、iOS等的API、又如print、debug 相關(guān)的API)。
Engine層使用 C++ 實(shí)現(xiàn),主要包括:Skia,Dart 和 Text;?
Skia 層是開(kāi)源的二維圖形庫(kù), Dart層包含 Dart 相關(guān)的API,Text 層包含文字繪制展示相關(guān)的API。
Embedder是一個(gè)嵌入層
通過(guò)該層把Flutter嵌入到各個(gè)平臺(tái)上去,Embedder的主要工作包括渲染Surface設(shè)置,線程設(shè)置,以及插件等。平臺(tái)(如iOS)只是提供一個(gè)畫布,剩余的所有渲染相關(guān)的邏輯都在Flutter內(nèi)部,這就使得它具有了很好的跨端一致性。
一切皆為Widget:
Widget是Flutter應(yīng)用程序用戶界面的基本構(gòu)建塊。每個(gè)Widget都是用戶界面一部分的不可變聲明。 與其他將視圖、控制器、布局和其他屬性分離的框架不同,F(xiàn)lutter具有一致的統(tǒng)一對(duì)象模型:widget。

Widget分為?StatelessWidget 和?StatefulWidget
StatelessWidget 是無(wú)狀態(tài)的 Widget ,用于展示不需要改變顯示內(nèi)容的時(shí)候,使用StatelessWidget即可;
StatefulWidget 是有狀態(tài)的 Widget ,需要改變顯示內(nèi)容的時(shí)候,需要使用 StatefulWidget ;StatefulWidget 的子類相當(dāng)于存放了 State 的配置信息。StatefulWidget的界面顯示效果由 State 來(lái)控制展示。 當(dāng) StatefulWidget 對(duì)應(yīng)的界面數(shù)據(jù)變化后,調(diào)用 setState() 方法,然后系統(tǒng)會(huì)運(yùn)行 buildContext() 就可以做到更新界面的效果。
Container 是一個(gè)容器Widget;
Column 用于展示成 列 排列的 Widget;
Text 用于展示文字;
Image 用于展示圖片;
FlatButton 用于處理交互事件,同時(shí),F(xiàn)lutter中可以使用GestureDetector 對(duì)Widget 進(jìn)行包裹,也可以達(dá)到具備交互的效果的目的;
ListView?用于展示列表內(nèi)容。
ListTile?列表項(xiàng)