「这是我参与11月更文挑战的第14天,活动概况检查:2021最后一次更文挑战」
在之前的几篇文章中,咱们已经经过所学常识,成功的搭建了微信的发现界面和我的界面;今天咱们来尝试完成微信的通讯录界面
通讯录
导航栏按钮
在微信的通讯录界面中,导航栏右侧是有一个添加联系人按钮的,那么这个按钮怎么完成呢?
在Flutter
的AppBar
中有一个actions
的属性,其界说如下:
final List<Widget>? actions;
经过界说咱们发现,actions
属性是一个数组,里边用来寄存Widget
,那么咱们放进去两个简单的Container
看一下作用:
咱们在actions
中添加了一粉一白两个Container
,成果两个Container
依照顺序一次显现在AppBar
的右侧,而且将咱们的标题挤到了最左边,那么咱们删除一个Container
呢?
在只保存一个Container
的情况下,康复正常;
假如要保存两个按钮,而且期望标题在中间,能够经过AppBar
的centerTitle
属性操控:
接下来,咱们将按钮的逻辑不全,代码如下:
列表布局
咱们在之前的文章中已经学会了假如构建一个ListView
,这儿搭建联系人列表的过程,就不再赘述,咱们直接看初步作用:
在这个列表中,咱们的数据源分为了两部分:
- 第一部分,头部的四条本地数据,这部分数据是固定的;
- 第二部分,下部的联系人列表数据,这部分数据是从其他地方获取的人员信息列表;
咱们在布局的时候,运用同一个ListView
显现两个数据源的数据;然后,在_itemForRow
中经过index
来判别每一行要显现的数据来源:
- 假如
index
小于_headerList.length
,阐明是前四条数据,那么需求从_headerList
中获取数据信息,传递给_ContactsCell
来显现; - 不然,从
datas
也就是联系人列表中获取人员信息数据,传递给_ContactsCell
来显现;
接下来,咱们来看一下_ContactsCell
的具体完成:
-
_ContactsCell
布局主要分为上下两部分,选用Column
进行纵向布局;- 上部:显现
头像(图标)
和姓名
; - 下部:显现分割线;
- 上部:显现
- 在上部显现
头像
和姓名
的布局中,选用Row
进行横向布局;
在讲数据传入_ContactsCell
之前,咱们已经经过index
判别,传入了不同的参数,所以在_ContactsCell
中咱们能够经过不同参数的值是否为空来判别需求显现什么部件:
-
imageAsset
不为空,阐明是前四条数据,此刻需求运用AssetImage
显现本地图标; - 不然,就阐明是后边的联系人列表数据,就需求咱们运用
NetworkImage
来显现网络图片;