Flutter重點
內(nèi)容來源:https://flutterchina.club/tutorials/layout/
Flutter的組件介紹:https://flutterchina.club/tutorials/layout/#approach
- Widgets 是用于構(gòu)建UI的類.
- Widgets 用于布局和UI元素.
- 通過簡單的widget來構(gòu)建復雜的widget
Flutter布局機制的核心就是widget。在Flutter中,幾乎所有東西都是一個widget - 甚至布局模型都是widget我磁。您在Flutter應(yīng)用中看到的圖像盅弛、圖標和文本都是widget。 甚至你看不到的東西也是widget真友,例如行(row)黄痪、列(column)以及用來排列、約束和對齊這些可見widget的網(wǎng)格(grid)盔然。
在Flutter中桅打,事件流是“向上”傳遞的是嗜,而狀態(tài)流是“向下”傳遞的。
Widget庫
在設(shè)計用戶界面時挺尾,您可以使用標準widget庫中的widget鹅搪,也可以使用Material Components中的widget。 您可以混合使用兩個庫中的widget遭铺,可以自定義現(xiàn)有的widget丽柿,也可以構(gòu)建一組自定義的widget。
widgets library中的標準widget和Material Components library中的專用widget 魂挂。 任何應(yīng)用程序都可以使用widgets library中的widget甫题,但只有Material應(yīng)用程序可以使用Material Components庫。
對齊 widgets
您可以控制行或列如何使用mainAxisAlignment和crossAxisAlignment屬性來對齊其子項锰蓬。 對于行(Row)來說幔睬,主軸是水平方向,橫軸垂直方向芹扭。對于列(Column)來說麻顶,主軸垂直方向,橫軸水平方向舱卡。
StatefulWidget 和 StatefulWidget
有狀態(tài)的Widget使用StatefulWidget(與用戶有交互的), 無狀態(tài)的Widget使用StatelessWidget辅肾。
使用圖片
將圖片添加到項目時,需要更新pubspec文件才能訪問它們 - 此示例使用Image.asset顯示圖像轮锥。 有關(guān)更多信息矫钓,請參閱此示例的pubspec.yaml文件, 或在Flutter中添加資源和圖像舍杜。如果您使用的是網(wǎng)上的圖片新娜,則不需要執(zhí)行此操作,使用Image.network即可既绩。
基礎(chǔ) Widget
Text:該 widget 可讓創(chuàng)建一個帶格式的文本概龄。
Row、 Column: 這些具有彈性空間的布局類Widget可讓您在水平(Row)和垂直(Column)方向上創(chuàng)建靈活的布局饲握。其設(shè)計是基于web開發(fā)中的Flexbox布局模型私杜。
Stack: 取代線性布局 (譯者語:和Android中的LinearLayout相似),Stack允許子 widget 堆疊救欧, 你可以使用 Positioned 來定位他們相對于Stack的上下左右四條邊的位置衰粹。Stacks是基于Web開發(fā)中的絕度定位(absolute positioning )布局模型設(shè)計的。
Container: Container 可讓您創(chuàng)建矩形視覺元素笆怠。container 可以裝飾為一個BoxDecoration, 如 background铝耻、一個邊框、或者一個陰影蹬刷。 Container 也可以具有邊距(margins)田篇、填充(padding)和應(yīng)用于其大小的約束(constraints)替废。另外, Container可以使用矩陣在三維空間中對其進行變換泊柬。
Key
您可以使用key來控制框架將在widget重建時與哪些其他widget匹配椎镣。默認情況下,框架根據(jù)它們的runtimeType和它們的顯示順序來匹配兽赁。 使用key時状答,框架要求兩個widget具有相同的key和runtimeType。相當于ios中cell的identity刀崖。