代码


import 'package:flutter/material.dart';class TableView extends StatelessWidget {final Widget Function(BuildContext context, int section) buildHeader;final Widget Function(BuildContext context, int section) buildFooter;final Widget Function(BuildContext context, int section, int row) buildItem;final int number;final int Function(int section) itemCount;final Widget Function(BuildContext context, int section) sectionSpacer;final Widget Function(BuildContext context, int row) itemSpacer;final EdgeInsetsGeometry padding;const TableView({@required this.buildItem,@required this.itemCount,@required this.number,this.buildHeader,this.buildFooter,this.sectionSpacer,this.itemSpacer,this.padding});@overrideWidget build(BuildContext context) {return ListView.separated(padding: padding,itemBuilder: (context, section) {ListView itemsView = ListView.separated(physics: NeverScrollableScrollPhysics(),itemBuilder: (context, row) => buildItem(context, section, row),separatorBuilder: itemSpacer ?? (context, row) => SizedBox(width: 0, height: 0,),itemCount: itemCount(section),shrinkWrap: true,);return Column(children: [if (buildHeader != null) buildHeader(context, section),itemsView,if (buildFooter != null) buildFooter(context, section),],mainAxisSize: MainAxisSize.min,);},itemCount: number,separatorBuilder: sectionSpacer ?? (context, section) => SizedBox(width: 0, height: 0,),);}}

使用

  @overrideWidget build(BuildContext context) {return TableView(buildItem: (BuildContext context, int section, int row) {Color color = Colors.white;if (section == 0) color = Colors.red;if (section == 1) color = Colors.blue;return Container(child: Row(children: [Text('row: $row')],), color: color,);},itemCount: (int section) {if (section == 0) return 1;if (section == 1) return 2;return 3;},number: 3,buildHeader: (context, section) => Text("HeaderView: $section"),buildFooter: (context, section) => Text("FooterView: $section"),sectionSpacer: (context, section) => SizedBox(height: 20,),itemSpacer: (context, row) => SizedBox(height: 2,),);}

Flutter--分组列表实现思路相关推荐

  1. flutter 分组列表

    先看看效果是不是你想要的 library grouped_listview;import 'package:flutter/material.dart'; typedef TGroup GroupFu ...

  2. 【Android 仿微信通讯录 导航分组列表-下】自定义View为RecyclerView打造右侧索引导航栏IndexBar

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请标明出处: http://blog.csdn.net/zxt0601/article/details/52420706 本文出 ...

  3. [WP8.1UI控件编程]SemanticZoom控件实现分组列表

    11.1.5 SemanticZoom实现分组列表 SemanticZoom控件可以让用户实现一种更加高级的列表,这种列表可以对列表的项目进行分组,同时这个SemanticZoom控件会提供两个具有相 ...

  4. Android 仿微信通讯录 导航分组列表-上】使用ItemDecoration为RecyclerView打造带悬停头部的分组列表

    本文是Android导航分组列表系列上,因时间和篇幅原因分上下,最终上下合璧,完整版效果如下:   上部残卷效果如下:两个ItemDecoration,一个实现悬停头部分组列表功能,一个实现分割线(官 ...

  5. 【Android 仿微信通讯录 导航分组列表-上】使用ItemDecoration为RecyclerView打造带悬停头部的分组列表

    *本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请标明出处: http://blog.csdn.net/zxt0601/article/details/52355199 本文 ...

  6. 高级控件之分组列表视图(ExpandableListView)

    一.ExpandableListView的基础知识 和ListView不同的是它是一个两级的滚动列表视图,每一个组可以展开,显示一些子项,类似于 QQ列表,这些项目来至于ExpandableListA ...

  7. elasticsearch:使用top_hits聚合获取分组列表

    文章目录 业务需求 实现 java代码 kibana请求体 返回示例 业务需求 需要获取分组列表,查询返回值不是一个列表,而是根据某个字段分组 每组返回前5条,不足5条,则返回全部 按照时间倒序 实现 ...

  8. 电商-商品搜索列表设计思路

    商品搜索列表 主要元素:1.主图 2.价格 3.是否包邮 4付款人数 5.主标题 6.店铺所在省市 7.店铺名称 8.店铺认证 以上八大要素,构成了es商品索引的基本内容,其他内容尽量不要在商品索引中 ...

  9. 仿QQ分组列表(UITableView)

    // // ViewController.m // 仿QQ分组列表 // // Created by lanqs on 15/1/26. // Copyright (c) 2015年 Tanqihon ...

  10. Android 自定义RecycleView实现多级树(类似qq分组列表)

    由于工作需要开发一个类似qq分组列表功能,所以就自定义RecycleView来实现功能 效果图: 自定义View: import java.util.ArrayList; import java.ut ...

最新文章

  1. matlab未定义函数lp,matlab未定义函数或变量(附上源代码)
  2. golang 结构体 slice 排序
  3. SAP Spartacus storefront 模块的实现位置
  4. OpenCV 图像清晰度评价算法(相机自动对焦)
  5. 【渝粤教育】国家开放大学2018年秋季 2111T病理学与病理生理学 参考试题
  6. 【BZOJ1497】【codevs1789】最大获利,网络流之最大权闭合子图
  7. 周老师打酒喝光回 递归
  8. Windows下搭建elasticsearch集群案例
  9. iOS ASI--POST请求
  10. 流行前端几大UI框架排行榜
  11. 择一城终老,遇一人白首
  12. 计算机网络学习笔记(九)——网络层IP地址
  13. 为知笔记MathJax使用教程
  14. ZooKeeper - 四字命令解析
  15. SpringBoot整合腾讯云COS对象存储实现文件上传
  16. html如何用ajax连杰和苏局哭,ajax的探究与使用
  17. linux socat 命令,socat在Linux下的使用
  18. 通俗,通俗(白话)理解TCP和UDP的区别
  19. HT for web
  20. MAStudio开源让移动OA系统走的更远

热门文章

  1. mac 中idea激活Jrebel
  2. C++编写MC(含源码)
  3. Java框架tk_TKmybatis的框架介绍和原理分析及Mybatis新特性
  4. iOS 人脸识别拾遗一 坐标转换 截取
  5. STM32 C++编程系列二:STM32 C++代码封装初探
  6. canvas画布在主流浏览器中的尺寸限制
  7. macbook 常用键盘快捷键大全 mac os 苹果电脑
  8. 树莓派4B ubuntu20.04 python驱动光电传感器实现计数 教程
  9. PowerBUS 双总线收发器
  10. win10 keplerzl安装报错