一、介绍

1、使用flutter自带组件ExpansionTitle实现

2、ExpansionTitle属性介绍

const ExpansionTile({Key key,this.leading, //标题左侧需要展示的Widget@required this.title, //要展示的标题Widgetthis.subtitle, this.backgroundColor, //背景this.onExpansionChanged, //列表展开和收起的回调函数this.children = const <Widget>[], //列表展开时候的Widgetthis.trailing, //标题有侧要展开的Widgetthis.initiallyExpanded = false, //默认状态下是否展开this.maintainState = false,this.tilePadding,//内边距this.expandedCrossAxisAlignment,//次轴对齐this.expandedAlignment, //主轴对齐this.childrenPadding, //子内容内边距})

二、实现

1、首先准备一个数据源

2、因为是下层展开,所以上层是个ListView,所以得使用ListView组件,在他的Widget中是一个ExpansionTile

三、源代码

class LivePage extends StatefulWidget {const LivePage({Key key}) : super(key: key);@override_LivePageState createState() => _LivePageState();
}const citys = {"北京": ["东城区", "西城区", "朝阳区", "丰台区", "石景山区", "顺义区", "海淀区"],"上海": ["东城区", "西城区", "朝阳区", "丰台区", "石景山区", "顺义区", "海淀区"],"广州": ["东城区", "西城区", "朝阳区", "丰台区", "石景山区", "顺义区", "海淀区"],"深圳": ["东城区", "西城区", "朝阳区", "丰台区", "石景山区", "顺义区", "海淀区"],
};class _LivePageState extends State<LivePage> {@overrideWidget build(BuildContext context) {return MaterialApp(title: "列表折叠和展开",home: Scaffold(body: Container(child: ListView(children: _buildList(),),),),);}List<Widget> _buildList() {List<Widget> widgets = [];citys.keys.forEach((key) {widgets.add(_item(key, citys[key]));});return widgets;}Widget _item(String city, List<String> listArea) {return ExpansionTile(title: Text(city,style: TextStyle(color: Colors.black54, fontSize: 20),),children: listArea.map((area) => _buildArea(area)).toList(),);}Widget _buildArea(String area) {return FractionallySizedBox(widthFactor: 1,child: Container(alignment: Alignment.center,height: 50,margin: EdgeInsets.only(bottom: 3),decoration: BoxDecoration(color: Colors.lightBlueAccent),child: Text(area),),);}
}

Flutter之实现可折叠的列表相关推荐

  1. 【小程序】如何实现一个可折叠的列表

    作者刚接触小程序开发不久,打算用 CSDN 把学习过程中遇到的一些问题记录下来,都是一些浅显易懂的内容,希望对你也有所帮助. 如文章标题所示,作者要实现一个可折叠的列表,先来看一下页面效果: 这种展示 ...

  2. Flutter ListView (动态)列表组件、水平列表组件、图标组件详解

    Flutter ListView (动态)列表组件.水平列表组件.图标组件 Flutter ListView 基础列表组件.水平列表组件.图标组件 列表常见的几种情况: 垂直列表 垂直图文列表 横向列 ...

  3. Flutter(八)之豆瓣电影列表

    Flutter 八 之豆瓣电影列表 一. StarRating 1.1. 最终效果展示 1.2. 实现思路分析 1.3. 最终代码实现 二. DashedLine 2.1. 最终实现效果 2.2. 实 ...

  4. 【Flutter】ExpansionTile 可折叠列表

    文章目录 一.ExpansionTile 构造方法 二.完整代码示例 三.相关资源 一.ExpansionTile 构造方法 下面是 ExpansionTile 的构造方法 ; 其中 required ...

  5. Flutter瀑布流及通用列表解决方案

    简介:解决flutter复杂布局过程以及对基础能力进行扩充的列表视图解决方案 作者:闲鱼技术-夜澜 背景 目前闲鱼业务中无论是首页还是搜索页都有大量可以落地瀑布流的场景,而在Flutter原生中只提供 ...

  6. Flutter进阶—质感设计之列表项

    创建achievement_view_list_item.dart文件,具体的实现每一个列表项. import 'package:flutter/material.dart'; // 创建类,成就目标 ...

  7. 第一个Flutter demo——实现无限循环列表

    第一个Flutter demo(一) 参照flutter官网,实现第一个Flutter应用.第一部分:实现无限循环列表 第一部分功能介绍: 从零开始创建了一个 Flutter 应用: 编写 Dart ...

  8. Flutter基础之水平方向列表布局

    在Flutter中,用ListView来显示列表项,其支持垂直和水平方向展示,通过过一个属性我们就可以控制其方向,列表有以下分类: ListView组件属性及描述 属性名 类型 默认值 说明 Scro ...

  9. flutter实战4:新闻列表的懒加载和下拉手势刷新

    上一篇我们实现了新闻列表,但在网络不好的时候列表会白屏,因此为了提高使用体验,往列表中加入懒加载效果.其次,引入一个Flutter内置的手势控件,用于支持下拉刷新列表的效果如下图: Flutter将异 ...

最新文章

  1. macos下使用aria2_用Aria2代替Firefox内置的下载器
  2. Spring Boot中使用RabbitMQ
  3. MTK+Android编译
  4. boost::hana::partition用法的测试程序
  5. 【pyqt5学习】——tablewidget控件学习
  6. 事务的特性及事务的隔离级别(转)
  7. SpringMVC的上传与下载
  8. 计算机科学申请文书,美国留学:看牛人怎么写申请计算机CS专业的文书
  9. 【英语学习】【WOTD】decoct 释义/词源/示例
  10. Ruby 28 岁生日快乐!
  11. 使用 MIDP 底层用户接口 API
  12. 输入表重建工具ImportREC
  13. 计算机视觉方向简介 | 多视角立体视觉MVS
  14. spss进行多元线性回归并分析表格
  15. 获取当周和上周的周一、周日时间
  16. 凸集学习——理解凸集概念、凸包演示
  17. unity3d多人寻路问题方案
  18. 实践练习二:手动部署 OceanBase 集群
  19. 搭建私有云平台的一些随想
  20. 【软件分析学习笔记】5:可达定义分析(Reaching Definitions Analysis)

热门文章

  1. 中小学教学与管理的44个小创意(转)
  2. IDC报告:百度机器学习开发平台战略领跑市场,居于首位
  3. python实现千千音乐mp3下载
  4. 制作一个小工具:自动生成“将特定枚举值转换成字符串的C++函数”的代码
  5. sip软电话yate client的编译过程
  6. 华为“天才少年”有多牛?入职不到一年,算法就用于千万台华为手机
  7. C++ 冒险游戏 小镇5.4.0
  8. 微信内提示“网页包含诱导分享、关注等诱导行为内容,已停止访问”的解决方案...
  9. iPhone忘记锁屏密码,多次输错被禁用?三种方法轻松解决!
  10. 居则视其所亲,富则视其所与,达则视其所举,穷则视其所不为,贫则视其所不取。...