Flutter ListView ListView.build ListView.separated

2023-11-10

理解为ListView 的三种形式吧

ListView 默认构造

但是这种方式创建的列表存在一个问题:对于那些长列表或者需要较昂贵渲染开销的子组件,即使还没有出现在屏幕中但仍然会被ListView所创建,这将是一项较大的开销,使用不当可能引起性能问题甚至卡顿

直接返回的是每一行的Widget,相当于ios的row。行高按Widget(cell)高设置

ListView.build 就和ios的tableview差不多了

需要设置itemCount,itemBuilder:

ListView.separated 每一行都加了下划线的ListView.build,当然下划线也可以用上面两种模式直接自己画

class FriendList extends StatelessWidget {
  const FriendList({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ListView.separated(
      itemCount: friendListData.length,
      itemBuilder: (context, index) {
        return FriendCard(data: friendListData[index]);
      },
      separatorBuilder: (context, index) {
        return Divider(
          height: .5,
          indent: 75,
          color: Color(0xFFDDDDDD),
        );
      },
    );
  }
}

 

Flutter还提供了下拉刷新的组件:

RefreshIndicator

参考代码

class PullDownRefreshList extends StatefulWidget {
  const PullDownRefreshList({Key key}) : super(key: key);

  @override
  _PullDownRefreshListState createState() => _PullDownRefreshListState();
}

class _PullDownRefreshListState extends State<PullDownRefreshList> {

  Future onRefresh() {
    return Future.delayed(Duration(seconds: 1), () {
      Toast.show('当前已是最新数据', context);
    });
  }

  @override
  Widget build(BuildContext context) {
    return RefreshIndicator(
      onRefresh: this.onRefresh,
      child: ListView.separated(
        itemCount: friendListData.length,
        itemBuilder: (context, index) {
          return FriendCard(data: friendListData[index]);
        },
        separatorBuilder: (context, index) {
          return Divider(
            height: .5,
            indent: 75,
            color: Color(0xFFDDDDDD),
          );
        },
      ),
    );
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter ListView ListView.build ListView.separated 的相关文章

  • 线程池的讲解

    目录 1 传统线程缺点 2 线程池是什么 3 线程池的优点 4 线程池的使用 1 传统线程缺点 1 每次都需要创建和消耗线程 是需要消耗系统资源的 2 线程没有任务管理功能 当任务量比较大的时候没有任务队列对任务进行管理或者是拒绝任务 因此
  • C/C++中map和set嵌套使用

    边用边记录 所以不断更新中 目录 1 头文件 2 定义 3 迭代器 4 判断map中某个键值对是否存在 5 插入值 6 遍历map中嵌套的set 1 头文件 include
  • 线程间实现通信的几种方式

    目录 线程通信相关概述 提出问题 方式一 使用Object类的wait 和 notify 方法 方式二 Lock 接口中的 newContition 方法返回 Condition 对象 Condition 类也可以实现等待 通知模式 方法三
  • Wilcoxon符号秩+秩和检验学习[转载]

    参数检验就是已知数据的精确分布模型 根据数据来求出模型中的未知参数 而非参数检验就是无需对样本总体分布 比如满足正态分布 做出假设 1 符号检验 转自 https baike baidu com item E9 9D 9E E5 8F 82
  • excel文件拷贝

    package cn sos until import java io File import java io FileInputStream import java io FileOutputStream import java io I
  • MarkDown(LaTex) 数学公式

    目的 本文旨在记载MarkDown中一些常用的数学表达式的编码规则 其实使用的是LaTeX的编码规则 这些规则也可以用在matlab的一些函数及表达式中 为自己的工作带来便利 虽然接触时间很短 但是还是根据自己的编程经历得出了自己的一些看法
  • Mariadb修改数据

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 增加列 MariaDB none gt ALTER TABLE study db books gt ADD COLUMN classify id VARCHAR 20
  • Qt 下载安装

    文章目录 Qt下载 安装 多种渠道下载 1 Qt官方下载 慢 2 Qt国内镜像下载 较快 3 迅雷下载 快 安装 Qt下载 安装 多种渠道下载 1 Qt官方下载 慢 http download qt io archive 和 officia
  • mongodb 连接池配置

    参考官方描述 如果spring使用以下mongodb的配置 则默认是没有连接池的 spring data mongodb host 地址 port 27017 database 数据库名 username 账号 password 密码 每隔
  • 关于区块链的认识和看法

    区块链是什么 区块链是一种技术 区块链是以比特币为代表的数字加密货币体系的核心支撑技术 其核心优势是去中心化 区块链目前还没有行业公认的定义 有一种狭义的定义是 区块链是一种按照时间顺序将数据区块以链条的方式 组合成特定数据结构 并以密码学
  • 21、MySQL 元数据

    MySQL 元数据 你可能想知道MySQL以下三种信息 查询结果信息 SELECT UPDATE 或 DELETE语句影响的记录数 数据库和数据表的信息 包含了数据库及数据表的结构信息 MySQL服务器信息 包含了数据库服务器的当前状态 版
  • linux下添加cmath库

    在Terminal下输入g sqrt c lm即可
  • 621javaweb期末周大题

    15 请简述什么是JDBC JDBC的全称是Java数据库连接 Java Database Connectivity 它是一套用于执行SQL语句的Java API 应用程序可通过这套API连接到关系数据库 并使用SQL语句来完成对数据库中数
  • 解决ipset重启服务器 ipset list黑白名单需要重新建立问题

    一 安装ipset server yum install ipset service 二 设置开机自启动服务 systemctl enable ipset 三 保存ipset list ps 重启服务器之前要先执行下这个命令 要不然名单会丢
  • The requested URL /phpMyAdmin/ was not found on this server. 解决方案

    操作 phpStudy点 MySql管理按钮的时候 直接 报错找不到 服务 The requested URL phpMyAdmin was not found on this server 起因 博主排查了下 原因 是因为 我用phpSt
  • C# WPF Border控件总结

    Border控件不是一个布局面板 而是一个非常便于使用的元素 经常与布局面板一起使用 所以 在继续介绍其他布局面板之前 现在先介绍一下Border控件是有意义的 Border类非常简单 它只能包含一段嵌套内容 通常是布局面板 并为其添加背景
  • 元宇宙商标的致富路,断了

    链新 ID ChinaBlockchainNews 原创作者 杨郑君 2021年被称之为 元宇宙元年 也迎来了元宇宙商标注册的热潮 2021年全年 注册的元宇宙商标数量占目前元宇宙商标总数的99 9 然而 热潮背后却是疯狂抢注的乱象 腾讯
  • 安装cuda驱动

    目录 1 查看电脑上cuda版本 2 输入命令 查看cuda版本 3 去官网下载驱动 3 1 选择对应版本 3 2 选择下载版本 4 下载完成后 双击运行 4 1 同意许可协议 4 2 自定义 4 3 安装 5 输入命令验证 1 查看电脑上
  • C++机器学习库整理

    来自谷歌AI的TensorFlow 由 Google 开发的热门深度学习库 它拥有自己的工具 库和社区资源生态系统 使研究人员和开发人员能够轻松构建和部署 ML 支持的应用程序 官方文档 https www tensorflow org l
  • winform制作音乐播放器

    winform制作音乐播放器 本文利用C 调用Windows自带的Windows Media Player 打造一款属于自己的音乐播放器 以供学习分享使用 如有不足之处 还请指正 概述 Windows Media Player是微软公司出品

随机推荐

  • 4.3 服务器上的 Git - 生成 SSH 公钥

    4 3 服务器上的 Git 生成 SSH 公钥 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 25 初稿 目录 文章目录 4 3 服务器上的 Git 生成 SSH 公钥 版本说明 目录 生成 SSH 公钥 生成 SSH
  • SVN 在文件比较时提示:is not a avlid text file!

    解决方法 将文件编码格式改为 在VS中有File gt Save Advance Option
  • 【Springboot】——@EnableAsync@Async

    一直不太明白 线程池在实际应用当中到底扮演什么样的角色 有什么场景要用到 只有真正的项目设计的时候才能逐渐理解 实践出真知说的就是这么个道理 使用多线程 往往是创建Thread 或者是实现runnable接口 用到线程池的时候还需要创建Ex
  • [ Android实战 ] 通过uri删除文件

    Android通过 uri 删除文件 通过 file 开头的 uri 删除文件 通过 content 开头的 uri 删除文件 通过 ContentResolver delete 删除文件 通过 DocumentFile fromSingl
  • 硬核科普:一片晶圆可以生产多少芯片?

    视频来源 腾讯视频 原视频 52赫兹 点击查看往期内容 关注芯片之家 往期好文阅读 芯片之家精选文章合集 一 收藏起来慢慢看 芯片之家精选文章合集 二 收藏起来慢慢看 点击阅读
  • ios 卡顿,push多次同一个页面

    场景 快速多次点击cell跳转到另一个页面 另一个页面被push多次 原因 push后的页面有耗时操作或者刚好push到另一个页面时 另一个页面正好在reloadData卡住主线程 造成点击cell时卡住了 解决方法 重写导航控制器的pus
  • 如何通过SSH连接阿里云上的Linux系统

    亲测可用 若有疑问请私信 首先SSH是啥 维基一下 Secure Shell 安全外壳协议 简称SSH 是一种加密的网络传输协议 可在不安全的网络中为网络服务提供安全的传输环境 1 SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之
  • 01、win10下Apache 2.4.29+PHP 7.2.3+MySQL 5.7.21免安装开发环境配置

    一 软件下载 Apache2 4 29下载 下载地址 下载教程 PHP7 2 3下载 下载地址 下载教程 注意 一定要下载php 5 5 thread safe版本的 不然在后边没有要用到的php5apache2 4 dll库 MySQL5
  • android知识点 020 —— 版本信息,Android.os.Build 常用类

    1 Build VERSION SDK INT 软件app安装在哪个手机上 该手机的操作系统版本号 比如8 1对应的SDK INT是27 The SDK version of the software currently running o
  • qt案例-播放暂停动图

    wigdet h ifndef WIDGET H define WIDGET H include
  • MAC 查看程序安装目录

    查看程序安装目录 ps ef grep 程序名字 e g ps ef grep matlab
  • python中math库最大值_Python之math库和random库

    import math 相关函数 math ceil x x向上取最近的整数 然后返回这个整数 例 ceil 2 1 3 math degrees x 将x从弧度转换成角度 math fabs x 将x看作一个浮点数 返回它的绝对值 例 f
  • memcach基础知识--1

    memcache 1 memcache数据访问模型 首次访问从数据库查询 这是memcache 的模型 我们可以通过整合spring 来实现自己的数据同步机制 2 memcache 是相互之间乎不通信的分布式 memcache的分布式是完全
  • 电脑的任务栏卡,但是桌面可以正常使用

    这个的任务栏卡的原因可能如下 1 电脑后台运行过多的任务 占用过多c盘资源 导致任务栏卡死 解决方法 关掉多余的任务栏 2 也有可能是因为自己的windows更新 更新之后 任务栏 gt 右键 gt 资讯与兴趣 因为这个资讯与兴趣导致的任务
  • Python项目:The Ship Rendezvous Problem,利用贪心算法解决船舶交会问题

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 Python利用贪心算法解决船舶交会问题 1 Introduction 2 Python Task Greedy Heuristic for the SRP Function
  • TCP/IP协议基础知识

    作者 QQ群 852283276 微信 arm80x86 微信公众号 青儿创客基地 B站 主页 https space bilibili com 208826118 参考 TCP IP详解卷1 协议 网络七层协议 Wireshark 分析p
  • E58F8D476F6F676C65E5B0B1E698AFE58F8DE4BABAE7B1BB

    111001101011001110111110111001101011100010101101111001101010111010001010111010011000000010010100111001001011100010000000
  • 二值图像与灰度图像的区别

    二值图像 二值图像是指每个像素不是黑 就是白 其灰度值没有中间过渡的图像 这种图像又称为黑白图像 二值图像的每一个像素只有两个值0和1 其中0表示黑色 1表示白色 所以二值图都是长这样的 因为二值图每个像素只有两个值 所以每个像素只需要1b
  • 【整理】BIOS、BootLoader、uboot对比

    bios BIOS是英文 Basic Input Output System 的缩略语 直译过来后中文名称就是 基本输入输出系统 其实 它是一组固化到计算机内主板上一个ROM芯片上的程序 它保存着计算机最重要的基本输入输出的程序 系统设置信
  • Flutter ListView ListView.build ListView.separated

    理解为ListView 的三种形式吧 ListView 默认构造 但是这种方式创建的列表存在一个问题 对于那些长列表或者需要较昂贵渲染开销的子组件 即使还没有出现在屏幕中但仍然会被ListView所创建 这将是一项较大的开销 使用不当可能引