使用PaginatedDataTable时解决最后一页不够当前行的话会有很空白行的问题

解决的场景:

比如下图,28行数据,每页5行最后一页会多出两行空白。

解决方法:

可以使用PaginatedDataTable中的onPageChanged 来进行操作

onPageChanged (发生翻页时回调)

onPageChanged: (value) {
int rowCount = controller.dataSource.value.rowCount;
// Q:下面这些代码都是为了解决最后一页不够当前行的话会有很空白行的问题
// 先判断当前展示行是否大于剩余行数
if(rowCount - value < controller.rowsPerPage.value){
var perPage = rowCount - value;
// 如果当前展示行数大于剩余行数,就修改当前展示行为剩余的行数
// 但是有个操蛋的问题,修改的行数必须在availableRowsPerPage这个里面有数字,所以要新增
if(!controller.availableRows.contains(perPage)){
// 新增剩余行
controller.availableRows.add(perPage);
controller.rowsPerPage.value = perPage;
}
}else{
var defaultPage = controller.rowsPerPageLast.value;
// 如果rowsPerPage和rowsPerPageLast不相等就表示rowsPerPage在上面被修改过
if(controller.rowsPerPage.value != defaultPage){
// 这儿的操作和上面描述相反,出了最后一页就把新增的最后一页行数页删了
controller.availableRows.removeLast();
// 因为上面最后一页切换了展示行数,所以要跳出最后一页时要恢复之前的行数
controller.rowsPerPage.value = defaultPage;
}
}
},

具体的逻辑在上面写了注释,我再说下部分参数的意义

controller.dataSource => DataTableSource的封装类,我在controller中把它设置成了可监测的类

controller.rowsPerPage => 当前页显示的行数

controller.rowsPerPageLast => 切换显示行数后保留的上一个行数

controller.availableRows => 能切换展示行的列表
 
总结:
代码段中是flutter+getx的写法,如果你不使用getx,请灵活改变参数调用的方式,在StatefulWidget同样可以完成。
在onRowsPerPageChanged还可以优化一下代码,不然在最后一页改变展示行的话availableRows中新增进去的选项不会被去除

dart+flutter中使用PaginatedDataTable分页时最后一页多出空白行问题的更多相关文章

  1. easyui分页时,总页数出错

    错误出现 MyBatis用easyui写后台分页代码时,出现翻页后显示总页数错误 代码如下 可能原因在于后台mappers.xml里的sql语句错误 <select id="getPr ...

  2. 分页技巧_改进JSP页面中的公共分页代码_实现分页时可以有自定义的过滤与排序条件

    分页技巧__改进JSP页面中的公共分页代码 自定义过滤条件问题 只有一个url地址不一样写了很多行代码 public>>pageView.jspf添加 分页技巧__实现分页时可以有自定义的 ...

  3. 在Flutter中嵌入Native组件的正确姿势是...

    引言 在漫长的从Native向Flutter过渡的混合工程时期,要想平滑地过渡,在Flutter中使用Native中较为完善的控件会是一个很好的选择.本文希望向大家介绍AndroidView的使用方式 ...

  4. Flutter 中 JSON 解析

    本文介绍一下Flutter中如何进行json数据的解析.在移动端开发中,请求服务端返回json数据并解析是一个很常见的使用场景.Android原生开发中,有GsonFormat这样的神器,一键生成Ja ...

  5. flutter 中的样式

    flutter 中的样式 样式 值 width 320.0 height 240.0 color Colors.white,Colors.grey[300] textAlign TextAlign.c ...

  6. flutter中的异步机制Future

    饿补一下Flutter中Http请求的异步操作. Dart是一个单线程语言,可以理解成物理线路中的串联,当其遇到有延迟的运算(比如IO操作.延时执行)时,线程中按顺序执行的运算就会阻塞,用户就会感觉到 ...

  7. Flutter中的日期插件date_format 中文 国际化 及flutter_cupertino_date_picker

    今天我们来聊聊Flutter中的日期和日期选择器. Flutter中的日期和时间戳 //日期时间戳转换 var _nowTime = DateTime.now();//获取当前时间 print(_no ...

  8. flutter中的异步机制 Future

    饿补一下Flutter中Http请求的异步操作. Dart是一个单线程语言,可以理解成物理线路中的串联,当其遇到有延迟的运算(比如IO操作.延时执行)时,线程中按顺序执行的运算就会阻塞,用户就会感觉到 ...

  9. Flutter中的浮动按钮FloatingActionButton 及融合底部工具栏

    FloatingActionButton 简称 FAB,从字面理解可以看出,它是“可交互的浮动按钮”,其实在Flutter默认生成的代码中就有这家伙,只是我们没有正式的接触. 一般来说,它是一个圆形, ...

  10. 在Flutter中构建布局

    这是在Flutter中构建布局的指南.首先,您将构建以下屏幕截图的布局.然后回过头, 本指南将解释Flutter的布局方法,并说明如何在屏幕上放置一个widget.在讨论如何水平和垂直放置widget ...

随机推荐

  1. 2022.2.1最新版本的IDEA

          一.下载破解工具.激活码 激活工具下载链接:https://note.youdao.com/s/1ANz2F3o   6G5NXCPJZB-eyJsaWNlbnNlSWQiOiI2RzVO ...

  2. Navicat修改mysql表的字符集和排序规则

    突然想起前一阵子,在做javaweb后端debug的时候遇到的这个问题.由于在Dao层测试的时候没有尝试过中文的测试例,所以在Service写好后一直不报错但是无法插入数据库. 找了好久才发现是Mys ...

  3. 音频处理库:pydub与ffmpeg

    一句话简介:pydub--音频处理库:ffmpeg--音视频编解码工具. 一.  安装 安装pydub pip install pydub pip install ffprobe 安装ffmpeg m ...

  4. Vulhub 漏洞学习之:DNS

    Vulhub 漏洞学习之:DNS 1 DNS域传送漏洞 DNS协议支持使用axfr类型的记录进行区域传送,用来解决主从同步的问题.如果管理员在配置DNS服务器的时候没有限制允许获取记录的来源,将会导致 ...

  5. 3D场景建模零代码平台

    3D场景建模软件(零基础.零代码.**),是指用来制作场景的软件,分为2D建模和3D建模,二者使用的技术及原理不同. 2D软件:它是用3维几何图形绘制出三维图形的软件,其主要功能是利用软件中已经画好的 ...

  6. LeetCode-807 保持城市天际线

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline 题目描述 在二维数组grid ...

  7. python之定时任务APScheduler

    一.APScheduler APScheduler全称Advanced Python Scheduler 作用为在指定的时间规则执行指定的作业. 指定时间规则的方式可以是间隔多久执行,可以是指定日期时 ...

  8. corundum:100GNIC学习(三)——恢复工程

    前文:(一)https://www.cnblogs.com/shroud404/p/15364812.html (二)https://www.cnblogs.com/shroud404/p/15412 ...

  9. 一个方便IO单元测试的C#扩展库

    对于我们.Net程序员,System.Web.Abstractions我们都非常熟悉,主要作用于Web可以实现单元测试,他是在.Net framework 3.5 sp1开始引入的,很好的解决项目表示 ...

  10. 42.Linux查看日志的几种方式

    Linux查看日志的命令有多种: tail.cat.tac.head.echo等,本文只介绍几种常用的方法. 1.tail 这个是我最常用的一种查看方式 命令格式: tail[必要参数][选择参数][ ...