PopupMenuButton
今天来到了第一个页面,聊天页面。之前在AppBar添加actions有点击事件使用的是GestureDetector的onTap�.今天介绍另外一个PopupMenuButton
- offset:可以自定义偏移的距离
- itemBuilder:是一个需要返回一个指定类型的数组
typedef PopupMenuItemBuilder<T> = List<PopupMenuEntry<T>> Function(BuildContext context); - child:响应的按钮
appBar: AppBar(title: Text('微信'),centerTitle: true,actions: [Container(margin: EdgeInsets.only(right: 10),child: PopupMenuButton(color: Color.fromRGBO(1, 1, 1, 0.5),offset: Offset(0, 60),itemBuilder: (BuildContext context) {return [PopupMenuItem(child: _MenuItemBuilder('images/发起群聊.png', '发起群聊')),PopupMenuItem(child: _MenuItemBuilder('images/添加朋友.png', '添加朋友')),PopupMenuItem(child: _MenuItemBuilder('images/扫一扫1.png', '扫一扫')),PopupMenuItem(child: _MenuItemBuilder('images/收付款.png', '收付款')),];},child: Image.asset('images/圆加.png',width: 30,),),)],),
网络数据准备
现在正是开始涉及到网络请求了,打开RAP模拟数据这个网址,注册之后新建仓库
新建接口:
编辑接口信息:
这里我没有加参数,直接返回的响应内容为一个数组
后面的规则的话可以在Mock这里找到,图片的话是在模拟用户信息的网站这里找到的,图片url最后一位的编号(20-70)对应的是不同的模拟用户的头像。有了这些模拟的数据,我们就能开始使用网络请求啦。
网络请求
这里介绍的是http,在Pub上搜索http
有个复制按钮,复制之后直接在pubspec.yaml里导入这个库,最新的版本是^0.13.4
点击Pub get安装完成之后就可以使用了!这个库也介绍了比较详细的用法
@overridevoid initState() {// TODO: implement initStatesuper.initState();// 获取数据getData();}getData() async {final url =Uri.parse('http://rap2api.taobao.org/app/mock/293759/home/chat/list');var response = await http.get(url);print('Response status: ${response.statusCode}');print('Response body: ${response.body}');}
async表示异步执行这个方法,iOS中使用的是block的回调表明网络数据回来,这里相对比较简单,使用一个关键字await就表示数据回来后的操作。
