Flutter练习:gridview分页

Flutter练习:gridview分页按照惯例:先上效果图这里是某一天气app的效果图,看到这个。感觉很清新,我要是自己能实现一下就好了。实现思路:使用Swipe做轮播组件,子Widget是GridView,只需要控制传入的数据,就可以实现每页不一样。思路有了,动手开始干。1、我们先写了一些模拟数据,2、我们定义一个常量例如:finalintEVERY_PAGE_GRID_COUNT=4;假定每个页面展示四个item。之后我们就要考虑有了这些数据,一共展示多少页。intpage=lifeList.l

按照惯例:先上效果图

Flutter练习:gridview分页

这里是某一天气app的效果图,看到这个。感觉很清新,我要是自己能实现一下就好了。

实现思路:

使用Swipe做轮播组件,子Widget是GridView,只需要控制传入的数据,就可以实现每页不一样。思路有了,动手开始干。

1、我们先写了一些模拟数据,

Flutter练习:gridview分页

2、我们定义一个常量例如:final int EVERY_PAGE_GRID_COUNT= 4;假定每个页面展示四个item。之后我们就要考虑有了这些数据,一共展示多少页。

int page = lifeList.length % EVERY_PAGE_ITEM_COUNT == 0
        ? (lifeList.length ~/ EVERY_PAGE_ITEM_COUNT)
        : (lifeList.length ~/ EVERY_PAGE_ITEM_COUNT + 1);

(用列表对EVERY_PAGE_GRID_COUNT取余数,如果有余数,则Swipe的page等于列表长度对EVERY_PAGE_GRID_COUNT取整再加一;否则,page就等于整除结果。

之后我们需要定义一个局部变量

List<Map<String, dynamic>> showList = [];

作为每一分页的数据,根据当前Swipe的当前index不同,showList里面的数据也不一致。

Flutter练习:gridview分页

 在传入GridView.builder(…)之前对数据做了处理,先是把列表清空,之后根据pageIndex和page的关系进行取数据。GridView里面就是单纯的list的使用了。分页指示器的效果可以参考(自定义分页指示器)那篇。就是拿了swipe_pagination.dart那篇做了定制。

最后,这里还可以给出另一个思路。不需要局部变量(这里的showList),直接把数据传到GridView里面去,根据pageIndex(Swipe的index,即当前是第几页)和gridview的index(当前是GridView的第几个)做判断,这样也可以实现。

例如:我们可以直接在GridView的itemBuilder里面这样做:

return Text(lifeList[ pageIndex * EVERY_PAGE_ITEM_COUNT + index]["title"]);

这样,应该也可以实现最终的效果。这里不再详述。

今天的文章Flutter练习:gridview分页分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/27590.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注