Android To Flutter - 框架

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):

Flutter框架

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組成

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)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容