PhysicalModel
裁剪組件
場景:UI 需要實現四個角的圓角,常規是需要最外層容器設置borderRadius,然后里層的組件也需要設置borderRadius。通過PhysicalModel,只需要設置外層容器的borderRadius,里層組件會被自動裁剪。有點類似overflow:hiden
2.1 Card
Card:一個 Material Design 卡片。擁有一個圓角和陰影
默認情況下 Card 是無限小的。
Card 可識別為單個包含的單元。
Card 可以獨立存在,而不依賴于周圍的元素作為上下文。
一個 Card 不能與另一個 Card 合并,也不能分成多個 Card 。
2.2 ListTile
這個已經被多次使用了,最經典的案例就是個人名片,因為這個自帶 heading 放頭像, title, subtitle, text 這種可以放不同層級內容的部分。
2.3
SingleChildScrollView
組件是負責滾動的,里面只能嵌套一個組件
Column布局超出屏幕后不能滾動,需要在外層嵌套SingleChildScrollView才可以
可以設置滾動方向,也可以通過reverse 屬性設置閱讀順序
還可以解決TextField布局溢出問題
FittedBox 縮放
負責對組件進行縮放和位置調整
fit 縮放方式縮放本身占據FittedBox的大小,默認值BoxFit.contain
子組件的寬度或高度被縮放到父容器限定的值時,就會被停止縮放
2.4
CustomScrollView
兩個組件結合起來形成一個滾動區域
AppBar -> SliverAppBar
GridView -> SliverGrid
ListView -> SliverFixedExtentList
轉換后的組件都是以(
Sliver)開頭的,其本身是不具備滾動特征的,但是當放在CustomScrollView中之后,則可以實現滾動的功能
2.5
PageView
實現類似輪播圖的效果
數據量大可通過PageView.builder優化性能
2.6
GestureDetector
手勢識別的組件,可以識別點擊、雙擊、長按事件、拖動、縮放等手勢
2.7
InkWell
作用跟GestureDetector類似。
GestureDetector使用點擊無水波紋出現,InkWell可以實現水波紋效果
2.8
ClipRRect
裁剪圓角