一个简单的关于吸顶效果的列表

其实大体挺简单的,核心是使用了一个吸顶插件sticky_headers实现的,在这里把代码贴出来

只是有页面效果,搜索并没有完善,如果后续我完善了,会再来完善一下这篇文章。
关于其中的数据问题,我是随便写了一些数据,如果真正要使用的话,需要造一个完善的数据,一个数组当中要有吸顶标志数据,在吸顶标志数据下面再有的就是我们展示的list数据

示范数据
List<dynamic> formData = [{'indentition':'A','data':[{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201804/25/20180425000646_fsmLS.thumb.700_0.jpeg","userName":"阿宝","desc":"虎牙平台主播……","groupCode":"abao"},{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201807/20/20180720184625_wfdte.thumb.700_0.jpeg","userName":"阿乐","desc":"马什么梅????夏洛特烦恼","groupCode":"ale"},]}];

AtUserProvider.dart

import 'package:flutter/material.dart';
import 'package:lpinyin/lpinyin.dart';class AtUserProvider {List<dynamic> formData = [{'indentition':'A','data':[{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201804/25/20180425000646_fsmLS.thumb.700_0.jpeg","userName":"阿宝","desc":"虎牙平台主播……","groupCode":"abao"},{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201807/20/20180720184625_wfdte.thumb.700_0.jpeg","userName":"阿乐","desc":"马什么梅????夏洛特烦恼","groupCode":"ale"},]}];List<Map> data = [{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201603/06/20160306204517_i4Se8.jpeg","userName":"爸爸","desc":"我是描述……","groupCode":"baba"},{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201410/09/20141009224754_AswrQ.jpeg","userName":"妈妈","desc":"","groupCode":"mama"},{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201804/25/20180425000646_fsmLS.thumb.700_0.jpeg","userName":"马勒勒","desc":"虎牙平台主播……","groupCode":"malele"},{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201807/20/20180720184625_wfdte.thumb.700_0.jpeg","userName":"马冬梅","desc":"马什么梅????夏洛特烦恼","groupCode":"madongmei"},{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201509/22/20150922134955_vfEWL.jpeg","userName":"阿坝","desc":"描述","groupCode":"abei"},{"avatarUrl":"http://5b0988e595225.cdn.sohucs.com/q_70,c_zoom,w_640/images/20200201/43d42a8c4ae64ae8b10e6189d7ab6b1c.jpeg","userName":"北京","desc":"","groupCode":"beijing"},{"avatarUrl":"http://hbimg.b0.upaiyun.com/e330a06d2af976f03c12077932f037bbf900551876486-IGKDyg_fw658","userName":"韩佳佳","desc":"","groupCode":"hanjiajia"},{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201604/13/20160413140938_mT5kN.jpeg","userName":"北方的神","desc":"我是雷神托尔,北方的神","groupCode":"beifangdeshen"},{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201611/17/20161117201306_UxBuA.thumb.700_0.jpeg","userName":"韩信","desc":"","groupCode":"hanxin"},{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201707/26/20170726102254_J4MH5.jpeg","userName":"弟弟","desc":"你就是个弟弟","groupCode":"didi"},{"avatarUrl":"http://b-ssl.duitang.com/uploads/item/201603/09/20160309205408_SeLmZ.thumb.700_0.jpeg","userName":"弟媳啊","desc":"描述","groupCode":"dixi"}];List pro = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
}
import 'package:flutter/material.dart';
import 'package:jianzhi/providers/AtUserProvider.dart';
import 'package:sticky_headers/sticky_headers.dart';class FriendList extends StatelessWidget {@overrideWidget build(BuildContext context) {ScrollController controller = ScrollController();double rpx = MediaQuery.of(context).size.width / 750;return Scaffold(appBar:AppBar(backgroundColor: Color(0xff121319),leading: IconButton(icon: Icon(Icons.close),onPressed: (){Navigator.pop(context);},),title: Text('通讯录'),centerTitle: true,bottom: PreferredSize(preferredSize: Size.fromHeight(80 * rpx),       // 要设置一下高度才可以使用child: Container(// margin: EdgeInsets.symmetric(vertical:20*rpx),color: Colors.grey[700],padding: EdgeInsets.symmetric(horizontal:20*rpx),child: TextField(decoration: InputDecoration(icon: Icon(Icons.search, color: Colors.grey[500],),hintText: '搜索用户备注或名字',hintStyle: TextStyle(color: Colors.grey[500],)),),),),),body: genUserList(context, controller));}
}genUserList(context, controller){AtUserProvider provider = AtUserProvider();var data = provider.data;print(data);return ListView.builder(shrinkWrap: true,controller: controller,itemCount: data.length,itemBuilder: (BuildContext context, int index){return StickyHeader(header: Container(alignment: Alignment.centerLeft,padding: EdgeInsets.only(left:20),width: MediaQuery.of(context).size.width,height: 49,decoration: BoxDecoration(color: Colors.grey),child: Text(provider.pro[index], style: TextStyle(color: Colors.white,fontSize: 20),),),content: genContentList(data,context, controller),);});
}genContentList(data, BuildContext context, controller){double rpx = MediaQuery.of(context).size.width / 750;return ListView.builder(shrinkWrap: true,controller: controller,itemCount: data.length,itemBuilder:(BuildContext context, int index){return Container(decoration: BoxDecoration(color: Colors.black),height: 130 * rpx,child: Row(children: <Widget>[Container(width: 80*rpx, child: CircleAvatar(backgroundImage: NetworkImage(data[index]['avatarUrl']),)),Container(padding: EdgeInsets.only(left:20*rpx),width: 420*rpx, child: Column(crossAxisAlignment: CrossAxisAlignment.start,mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[Container(child: Text(data[index]['userName'],style: TextStyle(fontSize: 32*rpx, color: Colors.white), maxLines: 1, overflow: TextOverflow.ellipsis),),data[index]['desc'].toString().length == 0 ? Text('') : Container(child: Text(data[index]['desc'],style: TextStyle(color:Colors.grey[500], fontSize: 32*rpx), maxLines: 1, overflow: TextOverflow.ellipsis,),),],),),Container(alignment: Alignment.centerRight,width: 250*rpx,child: Icon(Icons.arrow_right, color: Colors.white,),)],),);});
}

Flutter关于简单的吸顶通讯录制作相关推荐

  1. vue简单实现吸顶效果pc

    首先看一下实现效果图,刚进页面的,是有一个头部: 当页面往下滑,tab的标签页就需要固定在头部,效果图如下: 看一下实现的代码: <template><div><div ...

  2. axure9怎么让页面上下滑动_Axure制作:页面上下滑动时的菜单栏悬浮吸顶效果

    昆仑女神的故事,sem优化,破产管理人 在移动端页面上,用手上下滑时,超过一定向上滑动时,菜单栏能有吸顶效果,如何用axure实现呢? 作者在最近在手机移动端的时候,有一个动画,希望达到效果:用手上下 ...

  3. Flutter 页面滚动吸顶详解(NestedScrollView)

    前言 在业务开发中我们经常会有滚动吸顶的效果,目前Flutter也有很多种实现方式,这里介绍一下本人在开发中使用到的基于NestedScrollView实现的滚动吸顶组件:以及中间涉及的各种定位的布局 ...

  4. Flutter吸顶效果

    前言: 关于吸顶效果,在Flutter当中,已经提供了这么一个控件,但是由于太复杂,所以网上的资料有些少,本文章主要利用Flutter自带的这种吸顶动画控件,配合着动画完成的一个用户中心的页面. im ...

  5. flutter 吸顶效果

    flutter 吸顶问题 今天在做一个吸顶效果时,发现了一些问题: 我是用的是官方widget  CustomScrollView+SliverAppBar 可向下拉伸并虚化背景功能代码: Custo ...

  6. 微信小程序导航栏或菜单栏吸顶效果简单实现

    微信小程序导航栏或菜单栏吸顶效果简单实现 思路: 1.获取导航栏初始位置距顶部的距离s1(通过获取页面标签方法) 2.监听页面的滑动,获取滑动距离s2(使用onPageScroll) 3.当s2> ...

  7. android 条件筛选吸顶,自定义吸顶LayoutManager

    吸顶效果 RecyclerView已经成为在Android Native开发过程中的明星组件,出镜率超高,只要需要列表展示的内容,我们第一想到的就是使用RecyclerView.RecyclerVie ...

  8. 吸顶那个叫什么_为什么我家吸顶灯开灯后一闪一闪的

    前不久,笔者看到网络上有网友在问:为什么我家的吸顶灯开灯后一闪一闪的,关灯后闪一会才会灭!对于这个问题,笔者发现有好多网友在问.我们给出的方法和原则就是:哪里里坏了换哪里! 那么,具体是哪里坏了,我们 ...

  9. 最贴近京东首页体验的嵌套滑动吸顶效果

    吸顶效果是各家 App 或多或少都会用的一个交互,这种交互也常见于 PC.H5,可以说是一种通用性很强的前端交互体验,相比较来说京东首页的嵌套滑动吸顶效果是各个类似效果中体验比较好的一个,因为在嵌套布 ...

  10. vue中怎么实现吸顶效果

    在 web 应用中,我们经常需要让页面中的一个或多个元素在页面滚动时保持固定位置.这种效果通常被称为吸顶效果,因为它使元素像粘在页面顶部一样固定不动. 在 Vue 中,实现吸顶效果有不同的方法.本文将 ...

最新文章

  1. 活动推荐 | 2019日立「视频分析技术黑客马拉松」报名启动,还有高额奖金等你赢...
  2. http://www.linux.gov.cn
  3. leetcode 58. Length of Last Word 题解【C++/Java/Python/JS】
  4. PHP 接口输出 图片
  5. 2021Q1美妆行业季度观察报告
  6. 数据3分钟丨GitHub开放全世界最大安全咨询数据库;DataBench-T正式开源;甲骨文283亿美元收购Cerner...
  7. Java 蓝桥杯 芯片测试
  8. vue 代码快捷键_你可能不知道的19种运行JavaScript代码工具
  9. OC算法练习-Hash算法
  10. 使用Luyten工具反编译jar包
  11. 当驾校学员遇上微信小程序
  12. 深入理解Builder模式(转载)
  13. 'MPD' object has no attribute 'myIP'
  14. POS收银系统报EFI Shell version 2.00错误
  15. 融合通信技术趋势和演进方向 | QCon2021云信专场
  16. ElasticSearch搜索引擎详解-持续更新中
  17. 在Linux(Ubuntu)下安装Arial、Times New Roman等字体
  18. ******CSDN后引发 7K7K 、嘟嘟牛、178、多玩、猫扑、人人等各大知名网站数据库下载地址 (转载)...
  19. 【Pyecharts】Python数据可视化:英雄联盟2020赛季数据全方位解读~
  20. 三方支付公司有哪些?

热门文章

  1. adb 重启应用程序
  2. python分析财务报表
  3. 微信小程序订阅服务器,微信小程序之模板订阅消息
  4. 预测算法模型(灰色预测和BP神经网络)
  5. PSFTP上传文件到服务器
  6. vue跨域解决方案websocket_前端跨域解决方案汇总
  7. 三星s7edge计算机软件,三星s7edge 官方6.0固件
  8. 【测试】ESP32连接蓝牙耳机音箱测试
  9. 一文带你了解 HTTP 黑科技
  10. python MAC地址查询