热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flutter微信项目实战03我的界面搭建(下)

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flutter微信项目实战03我的界面搭建(下)相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flutter微信项目实战03我的界面搭建(下)相关的知识,希望对你有一定的参考价值。






1. 写在前面

在上篇文章中已经对微信的界面的头部进行了界面的布局搭建,还有下面列表部分没有弄完,那么今天就继续来写微信实战项目,包括自定义cell!

GitHub项目地址


2. 列表实现分析

我们先来分析一下列表List 的结构组成,有图片,有文字,有左边的有右边的,cell 之间还有灰色的间隔,还有分割线。

一个 cell 的整体肯定是一个Container,左右也是一个Container,图片和文字可以是Container包裹一个Row,是左右的布局。

整个列表的肯定是ListView, cell 之间是上下结构,可以使用Column来布局。


3. 自定义 cell

自定义 cell,我们要考虑扩展性,看看是否其他页面也可以共用,的界面的 cell 里面是有图片、文字、箭头。

发现页面的 cell 还有子标题和子图片,如下:

那么在cell 的属性就有标题、图片、子标题、子图标,箭头,箭头是每个 cell 都有的,就不需要设置属性了,直接代码里面写就可以了。

final String? title;//标题
final String? subTitle;//子标题
final String? imageName;//图标
final String? subImageName;//子图标
//构造方法
const MineCell(this.title, this.subTitle, this.imageName, this.subImageName);


在构造方法里面用 括起来的就是可选的参数,?号修饰是表示空安全,可以为 null,就是类型于Swift里面的可选的意思,使用的时候要用!号修饰,表示不为 null 是有值的,下面代码里面会有使用到。


cell要响应点击的事件,那么就需要一个GestureDetector来包裹起来,并且实现点击的方法。


  • left

//left
Container(
padding: const EdgeInsets.all(10),
child: Row(
children: <Widget>[
Image(
image: AssetImage(imageName!),
width: 20,
),
SizedBox(
width: 15,
),
Text(title!),
],
),
)

SizedBox可以创建一个固定大小的框&#xff0c;具有固定宽高的组件&#xff0c;可以设置宽高&#xff0c;这里是用来分割、占位用的。


  • right

Container(
padding: EdgeInsets.all(10),
child: Row(
children: <Widget>[
subTitle !&#61; null ? Text(subTitle!) : const Text(&#39;&#39;),
subImageName !&#61; null
? Image(
image: AssetImage(subImageName!),
width: 12,
)
: Container(),
//箭头
const Image(
image: AssetImage(&#39;images/icon_right.png&#39;),
width: 14,
)
],
),
)

现在就实现了 cell 的自定义了&#xff0c;那么接下来就是列表的整体实现了。


4. ListView 实现列表

我们把自定义的 cell的头文件导入到我的界面mine_page 里面。大体代码结构如下&#xff1a;


  • ListView 代码如下


........部分代码省略............
children: [
const SizedBox(height: 10,),
const MineCell(
imageName: &#39;images/微信支付.png&#39;,
title: &#39;支付&#39;,
),
const SizedBox(
height: 10,
),
const MineCell(
imageName: &#39;images/微信收藏.png&#39;,
title: &#39;收藏&#39;,
),
//cell 底部分割线
Row(
children: <Widget>[
//左右
Container(width: 50, height: 0.5, color: Colors.white),
//Container(height: 0.5, color: Colors.grey)
],
)
........部分代码省略............

]

cell之间大的间隙我们使用SizedBox来实现&#xff0c;cell 底部的间隙&#xff0c;这里的实现是&#xff1a;

Row(
children: <Widget>[
//左右
Container(width: 50, height: 0.5, color: Colors.white),
Container(height: 0.5, color: Colors.grey)
],
)

cell底部的分割线是没有占满屏幕宽度的&#xff0c;我们可以使用Row左右布局&#xff0c;左边固定一个宽度和高度的Container&#xff0c;右边固定一个高度Container&#xff0c;那么宽度就自动拉满了&#xff0c;然后设置一下颜色就 OK 了。

Flutter的布局还是很方便的&#xff0c;也很灵活&#xff0c;有兴趣的老铁自己动手去实现一下吧&#xff01;

GitHub项目地址


5. 写在后面



关注我&#xff0c;更多内容持续输出



  • CSDN

  • 掘金

  • 简书

  • [基础组件合集]

【Flutter】基础组件【01】Text

【Flutter】基础组件【02】Container

【Flutter】基础组件【03】Scaffold

【Flutter】基础组件【04】Row/Column

【Flutter】基础组件【05】Icon

【Flutter】基础组件【06】Image

【Flutter】基础组件【07】Appbar

【Flutter】基础组件【08】BottomNavigationBar

【Flutter】基础组件【09】Button


  • [项目实战合集]

【Flutter】微信项目实战【01】基本框架搭建

【Flutter】微信项目实战【02】我的界面搭建(上)



&#x1f339; 喜欢就点个赞吧&#x1f44d;&#x1f339;




&#x1f339; 觉得有收获的&#xff0c;可以来一波 收藏&#43;关注&#xff0c;以免你下次找不到我&#x1f601;&#x1f339;




&#x1f339;欢迎大家留言交流&#xff0c;批评指正&#xff0c;转发请注明出处&#xff0c;谢谢支持&#xff01;&#x1f339;








推荐阅读
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • 实验九:使用SharedPreferences存储简单数据
    本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ... [详细]
  • Android开发技巧:使用IconFont减少应用体积
    本文介绍如何在Android应用中使用IconFont来显示图标,从而有效减少应用的体积。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 开发日志:高效图片压缩与上传技术解析 ... [详细]
  • 类加载机制是Java虚拟机运行时的重要组成部分。本文深入解析了类加载过程的第二阶段,详细阐述了从类被加载到虚拟机内存开始,直至其从内存中卸载的整个生命周期。这一过程中,类经历了加载(Loading)、验证(Verification)等多个关键步骤。通过具体的实例和代码示例,本文探讨了每个阶段的具体操作和潜在问题,帮助读者全面理解类加载机制的内部运作。 ... [详细]
  • 在最近的WWDC17大会上,苹果公司宣布了多项重要更新,其中一项是macOS High Sierra 10.13 Final的正式发布。这一版本经过优化,显著提升了系统的稳定性和响应速度,为用户在任何Mac设备上提供了更加流畅的使用体验。本文将详细介绍如何在Windows系统中利用VMware虚拟机软件安装并运行macOS High Sierra 10.13 Final,帮助用户在非苹果硬件上体验这一先进操作系统。 ... [详细]
author-avatar
平凡文学女
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有