Flutter Web网站之Jetpack成型

news/2024/5/21 0:35:27/文章来源:https://blog.csdn.net/m0_46622598/article/details/105625159

往期

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

上期回顾

上期我们做了一个能兼容不同屏幕大小的主页,来适配Web、Android等平台。主要用到了**MediaQuery**来动态获取屏幕的宽度,来动态适配UI。

本期内容

好消息,我申请的域名jetpack.net.cn已经下来了,这次的目标就是让网站正式成型,完善网站的内容。

  • 完成Jetpack UI设计以及实现

啰嗦几句

读过我之前博客**一个在线的Jetpack模版项目生成工具**应该知道,我做了一个在线的Android Jetpack模版代码生成器,而这次我申请的域名jetpack.net.cn,也是为了让它有一个好的归宿,毕竟我自己的网站ibaozi.cn当初的用意是展示简历,博客,博主推荐位等等,跟Jetpack并没有血缘关系,后来,经过公司项目的Flutter转型,突然发现,我们构建Android项目的时候,用官方提供的Jetpack套库,可以轻松的创建一个稳定的项目,可Flutter并没有这样一个套库,于是我自发的想做这样一件事情,去收集目前github中开源的库,并提供相关简介和用例,辅助你去构建一个完整的Flutter项目。说完我的目的,就不啰嗦了,接下来,让我们开始开发。

分包处理

随着代码量的增加,业务的复杂,逐渐导致项目维护困难,简单的做一下分包处理,提高维护的效率,现在项目较小,分包处理方式如下

  • data 创建基础的Bean对象,和处理数据的来源
  • pages 创建各个界面的包
  • styles 颜色以及文本样式等主题配置管理
  • util 工具
  • widgets 自定义widgets
    这个分包只适合初期,有一个很凸显的问题就是如果page页面越来越多后,页面不太好区分,特别是需要抽离某个页面的时候可能不太好处理依赖,这样我们就引入模块化的概念,将一组业务的相关依赖放到一起,这样就可以轻松的做的抽离。有些人喜欢从一开始就设计的很完美,我的经验告诉我,一切先从简设计,保证满足业务的同时,尽量的做到更简单,决定业务成败的是产品,而不是技术,技术只是打辅助,打得好才能赢的更漂亮。同意的留言扣1,哈哈😄

Jetpack UI

大屏UI
Flutter Jetpack
中屏UI

小屏幕UI

Jetpack 实现

下面我来说下UI实现的一些细节,在本次页面的组建过程中主要用到如下组件

  • Align 负责控制子view的位置,左上、左下,右中等
  • TabBar 跟Android中的tabBar一样,一个按钮选择器
  • Expanded 尽可能的占用最大空间,可以用flex控制比例
  • PageView 左右或者上下滑动的页面
  • SingleChildScrollView 让子view可以滑动的容器
  • Column 纵向容器
  • Row 横向容器
  • SizedBox 固定宽度或者高度的盒子,组件之间增加间距用
  • InkWell 给子组件添加onTap点击事件处理
  • Card 卡片样式

Home主页代码

/// Column 纵向展示 TabBar、Body@overrideWidget build(BuildContext context) {return Container(color: tabBarBgColor,child: Column(children: <Widget>[_buildTabBar(), _buildBody()],),);}
///构建TabBar
/// Align 控制子组件局左
/// TabBar 构建选择器
/// _tabController 用来控制TabBar的index属性
/// isScrollable 设置为true,这样TabBar会默认包裹内容,关闭等比分配子组件_buildTabBar() {return Align(alignment: Alignment.topLeft,child: TabBar(indicatorColor: titleColor,labelColor: labelColor,controller: _tabController,isScrollable: true,tabs: _tabs.map((e) => Tab(text: e,)).toList(),),);}
/// Expanded 用来撑满剩余的屏幕空间
/// PageView 用来构建横向滑动View,根据index构建不同页面
/// scrollDirection 控制滑动方向
/// physics :NeverScrollableScrollPhysics 关闭横向滑动,因为我们的Flutter Jetpack是上下滑动的,如果左右滑动打开的话会导致滑动不顺畅。_buildBody() {return Expanded(child: PageView.builder(controller: _pageController,itemCount: 2,scrollDirection: Axis.horizontal,physics: NeverScrollableScrollPhysics(),onPageChanged: (index) {_tabController.animateTo(index);},itemBuilder: (BuildContext context, int index) {if (index == 0) return PageFlutterJetPack();if (index == 1) return PageAndroidJetPack();return Container();},),);}

Flutter Jetpack UI 实现

PageFlutterJetPack页面代码如下:

先整体看下,build函数构建一个Row横向的布局,并用Expanded等分,以3:1的方式分配如图所示
ResponsiveWidget.isLargeScreen或者ResponsiveWidget.isMediumScreen屏幕时显示Tags部分,小屏幕挪到了比例为3的部分的最下面。
继续往下实现:

首先用SingleChildScrollView实现上下可滚动,再用Container实现一个内边距,紧接着用Column实现纵向排版,跟堆积木一样,先构建内容的头_buildHead,再构建组件库的标题_buildComponentsTitle,接着就是组件的内容_buildComponentsContent,依次实现四个,最后在小屏幕的时候将tags挪到最下面, ResponsiveWidget.isSmallScreen(context) ? _buildTags()就是这样,有个小细节就是在SingleChildScrollView中使用GridView的时候,应为都是可滚动的,并且都是可以无限延伸的,所以需要确定GridView的高度,这样才能保证UI绘制的正确性,所以需要通过GridView的属性shrinkWrap和physics来让UI绘制正常,shrinkWrap设置为true实现子View全部绘制出来,这样缺少缓存,一定程度上浪费了内存,physics设置为NeverScrollableScrollPhysics关闭滚动。
还有个小的细节,为了适配不同屏幕大小这里,给GridView的列数做了动态配置,这样就实现了不同屏幕自动适配不同列的UI。
最下面是_buildFooter,这里放了备案号,这是网站必须的
整体页面已经完成,具体请转github代码查看完整实现,

ToDo

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

Go on

不知道你有没有觉得,flutter的web表现不是很好,尽管页面设计的足够简单,但还是会有滑动不顺畅的表现,特别是在android手机上的表现,但相信在flutter web 正式版到来的时候能有很大的改善。我们期待吧。

结束

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

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

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

相关文章

Flutter Web网站之ScrollView+GridView优化

往期 Flutter Web网站搭建教程Flutter Web 网站之主页框架搭建Flutter Web网站之Jetpack成型 上期回顾 上期我们做了简单的分包处理&#xff0c;然后就用了SingleChildScrollViewGridView为主要的框架实现了网格布局以及上下滑动效果&#xff0c;Chrome Web以及原生体验并没有发…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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