当前位置: 首页 > news >正文

第二十九回:如何给ListView添加分隔线

文章目录

  • 概念介绍
  • 添加方法
    • 使用属性
    • 装饰器
  • 示例代码
  • 经验总结:

我们在上一章回中介绍了多种创建ListView的方式,本章回中将介绍" 如何给ListView添加分隔线".闲话休提,让我们一起Talk Flutter吧。

概念介绍

我们在这里说的分隔线也叫Divider,它表示ListView中每一行或者每一列底部的横线,它主要用来区分ListView中的每个项目。默认的ListView中没有分隔线,本章回中将介绍如何给ListView添加分隔线。

添加方法

给ListView添加分隔线有两种方法,接下来我们详细介绍这两种方法:

使用属性

属性名称为separatorBuilder,该属性需要配合separated()方法使用,因为只有使用该方法创建的List才有separatorBuilder属性。我们只需要给该属性赋值就可以在ListView中添加分隔线。详细操作看代码就可以。注意该属性的类型是方法类型。

装饰器

就是在ListView的项目外层嵌套一个装饰器,相当于给ListView的每个项目都添加了一个边框,添加装饰器使用BoxDecoration Weidget,可以只添加底部的边框,也可以添加四周的边框。添加方法可以在代码中查看。

示例代码

//通过边框线来设定Divider,在第一行的顶部也会有,把边框设置为圆角后就可以看出来
Widget listEx01 = ListView.builder(itemCount: 8,itemExtent: 60,itemBuilder: (BuildContext context, int index) {//使用装饰来添加分隔线return Container(decoration: BoxDecoration(//只添加底部的边框线// border: Border(bottom: BorderSide(width: 1, color: Colors.lightBlue)),//添加一个边框// border: Border.fromBorderSide(BorderSide(width: 1,color: Colors.yellow)),border: Border.all(color: Colors.greenAccent, width: 1),//给边框设置半径,就是让装饰器的边框呈现圆角borderRadius: BorderRadius.circular(30),),child: listItem(Icons.ice_skating, "$index"),);},
);//通过separatorBuilder属性来设定divider
Widget listEx02 = ListView.separated(itemBuilder: (BuildContext context, int index) {return listItem(Icons.cabin, "$index");},separatorBuilder: (BuildContext context, int index) {return const Divider(endIndent: 1,height: 1,color: Colors.lightBlue,);},itemCount: 6);

在上面的代码中关键位置都添加了注释,这样方便大家理解代码。在给项目添加装饰器时,我们调整了方框的半径,这样只是为了方便观察位于项目四周的边框。编译并且运行上面的代码就可以看项目底部出现蓝色的分隔线。

经验总结:

我们在本章回中介绍了两种添加分隔线的方法:

  • 一种是使用属性,访方法的缺点是位于ListView最下方的一个item没有分隔线。
  • 一种是把ListView中的项目使用方形装饰器包起来,该方法的缺点是顶部也会有边框,让边框呈现圆角时会更加明显,当然只添加底部边框时不会有这种问题。

大家可以依据实际需要选择其中一种方法来给ListView添加分隔线。我不能理解的是Flutter官方为什么不提供一个属性来设置分隔线?欢迎大家在评论区交流与讨论。

看官们,关于"如何给ListView添加分隔线"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

http://www.lryc.cn/news/68464.html

相关文章:

  • 用友 LRP计划维护视图
  • 数组--part 5--螺旋矩阵(力扣59/54)(剑指offer 29)
  • 加密解密软件VMProtect入门使用教程(九)许可制度之许可系统功能
  • MySQL基础-事务详解
  • python 读写csv文件方法
  • 命令行更新Windows
  • lwIP 多线程注意事项
  • 工业革命的本质是动力革命:人类使用能量的水平得到了飞跃(蒸汽动力取代畜力和水力,机械代替人工。)【工业革命的诞生是能量富余的结果】
  • 【Kubernetes】Windows安装kubectl
  • 菜鸟健身-新手使用哑铃锻炼手臂的动作与注意事项
  • 二、LLC 谐振变换器
  • JWT 入门
  • 理解HttpSession
  • SolVES 模型生态系统服务功能社会价值评估(基于多源环境QGIS、PostgreSQL、ArcGIS、Maxent、R语言)
  • 雷鸟Air Plus体验:视觉大幅升级,影视/办公/游戏全能胜任
  • 【Android笔记101】Android之实现搜索界面(搜索弹出框)
  • 架构中如何消除语义的分歧?
  • 「免费版Axure」原型设计工具!
  • OPNET Modeler 例程——ALOHA和CSMA的性能对比
  • kali整体版本更新方法,为啥更新?
  • 微服务之服务容错
  • js 计算日期加减、某某天后的日期、星期几、几月、闰年
  • Vue3迎来升级,助力企业数字化转型
  • Java面试知识点(全)- Java并发- Java并发基础一
  • 淘宝商品详情数据采集,支持高并发请求
  • Java版spring cloud 本工程项目管理系统源码-全面的工程项目管理
  • 瑞吉外卖 - 后台系统退出功能(4)
  • JavaScript 基础 API DOM(一)
  • Java基础知识:1,DOS命令
  • NEFU ERP 企业资源计划[1] 详细知识点