91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flutter系統實現ExpansionPanelList的方法

發布時間:2020-07-28 14:26:05 來源:億速云 閱讀:461 作者:小豬 欄目:移動開發

這篇文章主要講解了Flutter系統實現ExpansionPanelList的方法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

在了解ExpansionPanelList實現前,先來了解下MergeableMaterial,它展示多個MergeableMaterialItem組件,當子組件發生變化時,以動畫的方式打開或者關閉子組件,MergeableMaterial的父控件需要在主軸方向是一個沒有限制的控件,比如SingleChildScrollView、Row、Column等。

基本用法如下:

SingleChildScrollView(
 child: MergeableMaterial(
 children: [
  MaterialSlice(
   key: ValueKey(1),
   child: Container(
   height: 45,
   color: Colors.primaries[1 % Colors.primaries.length],
   )),
  MaterialGap(key: ValueKey(2)),
  MaterialSlice(
   key: ValueKey(3),
   child: Container(
   height: 45,
   color: Colors.primaries[1 % Colors.primaries.length],
   )),
  MaterialGap(key: ValueKey(4)),
  MaterialSlice(
   key: ValueKey(5),
   child: Container(
   height: 45,
   color: Colors.primaries[1 % Colors.primaries.length],
   )),
 ],
 ),
)

效果如下:

Flutter系統實現ExpansionPanelList的方法

MergeableMaterial的子控件只能是MaterialSlice和MaterialGap,MaterialSlice是帶子控件的控件,顯示實際內容,MaterialGap用于分割,只能放在MaterialSlice中間。

靜態情況下,看不出具體的效果,動態改變子組件用法如下:

List<MergeableMaterialItem> items = [];
List.generate(_count, (index) {
 items.add(MaterialSlice(
  key: ValueKey(index * 2),
  child: Container(
  height: 45,
  color: Colors.primaries[index % Colors.primaries.length],
  )));
});

return SingleChildScrollView(
 child: MergeableMaterial(
 children: items,
 ),
)

效果如下:

Flutter系統實現ExpansionPanelList的方法

主要看增加/刪除子組件時的動畫效果。

增加分割線和陰影:

MergeableMaterial(
 hasDividers: true,
 elevation: 24,
 children: items,
)

效果如下:

Flutter系統實現ExpansionPanelList的方法

陰影值不能隨便設置,只能設置如下值:1, 2, 3, 4, 6, 8, 9, 12, 16, 24

此控件可以實現什么樣的效果呢?看下面效果:

Flutter系統實現ExpansionPanelList的方法

實現代碼:

bool _expand = false;

@override
Widget build(BuildContext context) {
 return Column(
 children: <Widget>[
  Container(
  height: 45,
  color: Colors.green.withOpacity(.3),
  alignment: Alignment.centerRight,
  child: IconButton(
   icon: Icon(Icons.arrow_drop_down),
   onPressed: () {
   setState(() {
    _expand = !_expand;
   });
   },
  ),
  ),
  _expand
   &#63; MergeableMaterial(
    hasDividers: true,
    elevation: 24,
    children: [
    MaterialSlice(
     key: ValueKey(1),
     child: Container(
      height: 200,
      color: Colors.green.withOpacity(.3),
     ))
    ],
   )
   : Container(),
  Container(
  height: 45,
  color: Colors.red.withOpacity(.3),
  ),
 ],
 );
}

看到這個效果是否想到了ExpansionPanelList呢?系統控件ExpansionPanelList就是使用此控件實現的。

看完上述內容,是不是對Flutter系統實現ExpansionPanelList的方法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

景东| 威远县| 曲水县| 林西县| 北安市| 墨玉县| 江油市| 连城县| 库伦旗| 舞钢市| 临猗县| 防城港市| 平泉县| 赤水市| 徐水县| 垦利县| 镇安县| 海兴县| 盐城市| 徐闻县| 聂荣县| 灵武市| 阿克| 富平县| 平安县| 山东| 和平区| 永胜县| 布拖县| 抚州市| 富川| 贵港市| 泽州县| 保山市| 绥宁县| 嘉荫县| 巧家县| 崇明县| 信宜市| 施甸县| 西安市|