亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

flutterExpansionTile層級菜單的實現

發布時間:2021-10-13 14:14:22 來源:億速云 閱讀:311 作者:柒染 欄目:編程語言

這篇文章將為大家詳細講解有關flutterExpansionTile層級菜單的實現,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

開發環境

win10  Android Studio

效果

用于多級菜單展示,或選擇。

如 每個省,市,縣;

如 樹木的病蟲害;

關鍵代碼

@override Widget build(BuildContext context) {  return ListTile(   title: _buildItem(widget.bean),  ); } Widget _buildItem(NameBean bean){  if(bean.children.isEmpty){   return ListTile(    title: Text(bean.name),    onTap: (){     _showSeletedName(bean.name);    },   );  }  return ExpansionTile(   key: PageStorageKey<NameBean>(bean),   title: Text(bean.name),   children: bean.children.map<Widget>(_buildItem).toList(),   leading: CircleAvatar(    backgroundColor: Colors.green,    child: Text(bean.name.substring(0,1),style: TextStyle(color: Colors.white),),   ),  ); }

分析

api:ExpansionTile  算法:遞歸

1. ExpansionTile的使用

一般傳入三個參數

key,title,children;

title:每一行上面的文字;  children:菜單下面的子條目,是一個數組;  key:根據源碼傳入PageStorageKey,用于保存滑動過程中的狀態;

2. 遞歸

有的條目有子條目,有的沒有,通過遞歸的方式遍歷出每條數據;

通過 bean.children.isEmpty 來結束遞歸;如 “直轄市”中的北京,下面沒有 “市”了,也就是children.isEmpty,此時應該結束遞歸,返回 ListTile;如“省級行政單位” 下面的 “黑龍江”還有很多個“市”,還不需要繼續遍歷返回 層級菜單ExpansionTile;

3. 源碼

學習flutter,很多不了解的地方都可以試著看看對應源碼上面的注釋。

/// A single-line [ListTile] with a trailing button that expands or collapses/// the tile to reveal or hide the [children].////// This widget is typically used with [ListView] to create an/// "expand / collapse" list entry. When used with scrolling widgets like/// [ListView], a unique [PageStorageKey] must be specified to enable the/// [ExpansionTile] to save and restore its expanded state when it is scrolled/// in and out of view.////// See also:////// * [ListTile], useful for creating expansion tile [children] when the///  expansion tile represents a sublist./// * The "Expand/collapse" section of///  <https://material.io/guidelines/components/lists-controls.html>.class ExpansionTile extends StatefulWidget {

上面一段是 ExpansionTile 的源碼注釋。粗略一看會發現幾個熟悉的字眼:ListView,ListTile不錯,實現層級菜單的效果,需要搭配使用ListView與ListTile,上面貼的關鍵代碼中 _buildItem()方法恰恰符合這一點,當有子條目的時候返回ExpansionTile ,當沒有子條目的時候返回 ListTile;

關于flutterExpansionTile層級菜單的實現就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

屏东县| 石林| 奈曼旗| 监利县| 平阳县| 正蓝旗| 沧源| 宝山区| 灵武市| 磐安县| 昂仁县| 盐山县| 佳木斯市| 鄢陵县| 雷山县| 和田县| 尚义县| 涿州市| 老河口市| 大足县| 浦县| 中江县| 济南市| 安陆市| 洪湖市| 东辽县| 苏尼特左旗| 绍兴市| 阿荣旗| 毕节市| 武义县| 刚察县| 宁津县| 阳城县| 英德市| 宁波市| 那曲县| 阿尔山市| 陆良县| 鄱阳县| 南澳县|