Flutter Web网站之ScrollView+GridView优化

news/2024/5/20 23:22:24/文章来源:https://blog.csdn.net/m0_46622598/article/details/106137661

往期

  • Flutter Web网站搭建教程
  • Flutter Web 网站之主页框架搭建
  • Flutter Web网站之Jetpack成型

上期回顾

上期我们做了简单的分包处理,然后就用了SingleChildScrollView+GridView为主要的框架实现了网格布局以及上下滑动效果,Chrome Web以及原生体验并没有发现什么问题,可在微信的Web浏览器中发现根本滑不动。这是什么问题呢?接下来会揭晓。

本期内容

本期主要解决App内置浏览器中滑动不顺畅的问题

搜索问题

顺着我们的问题,在google中搜索flutter web gridview inside singlechildscrollview scroll 等关键字

如图所示
我选择Stack Overflow的解答,点进去看到两个答案如图

第一个答案我们已经在使用了,这个是禁止掉了GridView的滑动效果来实现将滑动的事件处理交给SingleChildScrollView。很明显我们要用第二种方案实现CustomScrollView。

看文档

官方文档
中文文档
建议以官方文档为主,看不懂的话用中文文档辅助理解,因为官方文档一直保持最新,中文由于维护的原因会有延迟。不啰嗦,我来给你解释下。
CustomScrollView是一个负责滑动管理的容器,所有的子View统一实现Scrollable,如果你还用本身具有滑动处理的GridView,肯定是不行的,所以它就为我们提供了一整套的组件供我们使用。

  • SliverList, 线性列表.
  • SliverFixedExtentList, 和上面都属于List,但高度固定。
  • SliverGrid, 网格列表
  • SliverPadding, 为子View加一个内边距
  • SliverAppBar, 带有AppBar的头部视图
  • ScrollNotification and NotificationListener, 可用于查看滚动位置,而无需使用 ScrollController.
  • IndexedSemantics, 意思是为子View添加一个索引,用来通知滚动位置。
    注意:目前为止CustomScrollView的第一层子View必须是以上组件的构成,官方文档还少写了一个SliverToBoxAdapter,它同样是针对CustomScrollView来实现的特殊组件,看它的构造函数只有一个Key和child,其实他就是一个实现了CustomScrollView Scrollable的一个容器,用来作为CustomScrollView的第一层子View。大致对它有了认识之后,我们来改造一下我们原来的实现。

新的实现

SingleChildScrollView替换CustomScrollView,Column去掉,将原来的_buildHead包一层SliverToBoxAdapter。将之前的GridView替换为SliverGrid,他俩的区别就是在于SliverGrid去除了GridView自身的滑动处理,交给了上一层,属性用法基本一致,不用大动干戈。整体修改起来比较简单。

替换的结果

结果还是不错的,在App内置Web中也能流畅的滑动了,通过这次学到,以后遇到页面复杂的布局,又需要统一的滑动处理的时候,就要考虑使用CustomScrollView,你学到了吗?请你忘掉SingleChildScrollView+ListView、GridView的使用吧。

源码

请转github代码查看完整实现

ToDo

该部分内容后期慢慢给大家更新,请客观不要着急,当然你可以参与进来,私聊我就行哦。

  • 示例部准备下期实现,跳转至详情页面,并展示用例。源码已经完成点击即可跳转至github。
  • Tags 部分下期实现,这部分也需要新的UI展现,标签的功能类似与搜索,提供更快捷的方式查找想要的功能。
  • 留言功能设计,在你们使用过程中肯定会有不同的建议,有了这个功能就能知道你们的心声,所以这也是我们需要的实现的一个功能。
  • 优秀的项目推荐,有很多优秀的项目等待着我们去发现,我一个人的能力有限,如果有更多的人来推荐,会不断丰富我们的Jetpack内容。
  • 博客,这里考虑到有很多优秀的大佬,写过相关技术博客,帮你寻找最优秀的资源。功能设计如下图新增按钮。

结束

网站jetpack.net.cn,欢迎常来,也希望能在你学习Flutter的道路上提供一丢丢的帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_893818.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter Web网站之最简方式实现暗黑主题无缝切换

往期 Flutter Web网站搭建教程Flutter Web 网站之主页框架搭建Flutter Web网站之Jetpack成型Flutter Web网站之ScrollViewGridView优化 上期回顾 上期我们做了优化,主要针对ScrollViewGridView的使用场景,用了更加合适的组件,这期想做一个…

Flutter Web网站之Markdown展示与博客列表

往期 Flutter Web网站搭建教程Flutter Web网站之主页框架搭建Flutter Web网站之Jetpack成型Flutter Web网站之ScrollViewGridView优化Flutter Web网站之最简方式实现暗黑主题无缝切换 上期回顾 上期主要实现了主题切换,通过StreamBuilder来动态的切换ThemeData&…

关于云服务器中IE浏览器无法下载和登录网站的问题解决方案

关于云服务器IE浏览器无法下载和登录网站的问题解决方案 原因解决方案 原因 IE浏览器增强安全配置已启用,导致网站的访问权限降低 解决方案 1.进入服务器管理器 2.如图所示,本地服务器-IE增强的安全配置 3.设置为关闭 即可

asp.net802-个人博客网站空间管理系统#毕业设计

项目编号:asp.net802-个人博客网站空间管理系统 运行环境:VSSQL 开发工具:VS2010及以上版本 数据库:SQL2008及以上版本 使用技术:HTMLJSHTML 开发语言:C#,框架:asp.net 互联网彻底改变了我们每个人的生活&#x…

asp.net829家乡土特产销售网站#毕业设计

项目编号:asp.net829家乡土特产销售网站#毕业设计 运行环境:VSSQL 开发工具:VS2010及以上版本 数据库:SQL2008及以上版本 使用技术:HTMLJSHTML 开发语言:C#,框架:asp.net 基本每个地方都有自己的特产&#xff0c…

asp.net831手工制作方面的社交网站#毕业设计

项目编号:asp.net831手工制作方面的社交网站#毕业设计 运行环境:VSSQL 开发工具:VS2010及以上版本 数据库:SQL2008及以上版本 使用技术:HTMLJSHTML 开发语言:C#,框架:asp.net ​一直以来,都有很多的手…

asp.net824个人财务管理网站#毕业设计

项目编号:asp.net824个人财务管理网站#毕业设计 运行环境:VSSQL 开发工具:VS2010及以上版本 数据库:SQL2008及以上版本 使用技术:HTMLJSHTML 开发语言:C#,框架:asp.net 个人财务信息管理系统的开发目的是使个人财…

asp.net836护肤品评测网站#毕业设计

项目编号:asp.net836护肤品评测网站#毕业设计 运行环境:VSSQL 开发工具:VS2010及以上版本 数据库:SQL2008及以上版本 使用技术:HTMLJSHTML 开发语言:C#,框架:asp.net 越来越多的人接受了电子商务这种便捷、快速的…

asp.net838服装展示销售网站毕业设计

项目编号:asp.net838服装展示销售网站毕业设计 运行环境:VSSQL 开发工具:VS2010及以上版本 数据库:SQL2008及以上版本 使用技术:HTMLJSHTML 开发语言:C#,框架:asp.net 服装基本是每个人每一天都会接触到的东西&a…

asp.net843课程网站设计与开发#毕业设计

项目编号:asp.net843课程网站设计与开发#毕业设计 运行环境:VSSQL 开发工具:VS2010及以上版本 数据库:SQL2008及以上版本 使用技术:HTMLJSHTML 开发语言:C#,框架:asp.net 学习是人类进步的阶梯,只有不…

asp.net848化妆品销售网站#毕业设计

项目编号:asp.net848化妆品销售网站#毕业设计 运行环境:VSSQL 开发工具:VS2010及以上版本 数据库:SQL2008及以上版本 使用技术:HTMLJSHTML 开发语言:C#,框架:asp.net 化妆品基本是每一个女士每天都会使用到的一个…

python+djaongo的汉服文化交流网站汉服销售网站

开发语言:Python 开发工具:pycharm 数据库:MYSQL5.7 使用框架:djangovue 随着我国文化的不断复兴,很多文化元素也正在不断的出现在街头小巷之中, 其中汉服文化就是一个典型的代表,当前在很多拥有历史沉淀的景点,经常可以看到很多年…

Java+mysql基于SSM的公司办公网站OA系统#毕业设计

开发语言:Java 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架:ssm 随着我国经济的发展, 各类企业也在不断的增加,相应的办公的业务也在不断的增多,这就给日常的办公提出了新的要求,很明显传统的办公…

基于springboot+vue的电影视频订票咨询网站系统-Java项目毕业设计

项目介绍 随着网络不断的普及发展,影城管理系统依靠网络技术的支持得到了快速的发展,首先要从用户的实际需求出发,通过了解用户的需求开发出具有针对性的首页、电影信息、电影资讯、个人中心、后台管理、在线客服功能 影城管理系统的主要使用…

手搭我的世界基岩版服务器后台网站(LiteloaderBDS-SQLite-Spring Boot-Vue)Java后端+RESTful API;借助Three.js实现三维可视化展览交互界面

项目是刚刚完成的,于是趁热打铁把文档也写了。在这里分享出来,也方便以后回顾 目录 项目介绍 整体设计架构图 网站界面预览图 技术选型和原因 搭建步骤 库表设计 插件说明 后端说明 前端说明 部署说明 完整代码 插件代码 后端代码 前端代…

基于Python+django的茶叶销售商城网站

开发语言:Python 编号:py215-基于Python的茶叶销售商城网站 python框架:django 软件版本:python3.7/python3.8 数据库:mysql 5.7或更高版本 数据库工具:Navicat11 开发软件:PyCharm/vs code 前端…

基于Python+django的宠物销售商城网站#毕业设计

开发语言:Python 编号:py216-基于Python的宠物销售商城网站 python框架:django 软件版本:python3.7/python3.8 数据库:mysql 5.7或更高版本 数据库工具:Navicat11 开发软件:PyCharm/vs code 前端…

py217-基于Python+django的服装销售商城网站#毕业设计

开发语言:Python 编号:py217-基于Python的服装销售商城网站 python框架:django 软件版本:python3.7/python3.8 数据库:mysql 5.7或更高版本 数据库工具:Navicat11 开发软件:PyCharm/vs code 前端…

py218-基于Python+django的化妆品美妆销售商城网站#毕业设计

开发语言:Python 编号:py218-基于Python的化妆品销售商城网站 python框架:django 软件版本:python3.7/python3.8 数据库:mysql 5.7或更高版本 数据库工具:Navicat11 开发软件:PyCharm/vs code 前…

py218-基于Python+django的零食销售商城网站#毕业设计

开发语言:Python 编号:py218-基于Pythondjango的零食销售商城网站#毕业设计 python框架:django 软件版本:python3.7/python3.8 数据库:mysql 5.7或更高版本 数据库工具:Navicat11 开发软件:PyCh…