flutter_wechat
源码地址:ding-zou/flutter-wechat
A flutter app which clones wechat! 这是一个仿照微信样式基于flutter实现的app,还在继续完善中,欢迎提意见
包含了flutter中基本所有的组件,适合以此项目进行flutter学习。
页面展示

主要功能实现QA
1. 通讯录页右侧字母表
Q:如何实现列表滚动而字母表不滚动
A:因为通讯录列表是可以滚动的,所以我们想到使用Stack来把字符表放在固定位置而不会因为ListView滑动而滑动。
Q:如何控制字母表滚到对应位置触发外部轮廓圆?
A:首先我们使用的是BoxDecoration实现的外部轮廓,然后我们需要一个标志来控制其轮廓的显示,其实我们通过控制轮廓的颜色就好了,我们定义了一个颜色,滚动到时通过setState来改变颜色,就可以实现滚动是变化。
Q:如何确定对应字母的对应ListView的位置?
A:我们知道构建每一个ListTile时它的高度都是一样的,我们就可以通过计算来得到每个字母在ListView中的位置。我们模拟接收到数据,我们用一个map保存对应字母对应所在的位置,比如字母a所在为110,然后a有10个通讯录Item,那么b的位置就是a的位置加上10*每个Item的高度。此外我们每个字母还有一行显示,所以我们还要加上这行的高度。
2. 搜索栏
Q:怎么通过TextField实现自定义搜索栏?
A:我们通过设置TextField的装饰属性decoration,传入一个InputDecoration控件,里面我们可以设置很多属性来自定义显示。还不能满足你的情况的话可以自己在外层进行包装。
decoration: InputDecoration( icon: Container( padding: EdgeInsets.only(left: 10), child: Icon(Icons.search, size: 23, color: Colors.grey[400])), contentPadding: EdgeInsets.fromLTRB(0, 0, 0, 13), border: InputBorder.none, hintText: widget.hint, hintStyle: TextStyle( fontSize: 15, )),
3.主页右上角点击按钮弹窗
Q:如何实现这样的弹窗?
A:我们可以通过官方提供的PopupMenuButton来实现,可以通过以下这种方式构建
PopupMenuButton( offset: Offset(0,70), color: Color(0xff4c4c4c), itemBuilder: (BuildContext context) { return <PopupMenuItem<int>>[ /// 设置你的弹窗Item数组 PopupMenuItem( child: _popupItem(0xe69e,0), value: 0, ), ]; }, /// 设置按钮的Icon 是一个Widget类型的 icon: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), border: Border.fromBorderSide(BorderSide( color: Colors.black87, style: BorderStyle.solid))), child: Icon( Icons.add, size: 19, color: Colors.black87, ), ))
Q:如何设置弹窗出现的位置?它遮住了其他控件怎么办?
A:我们可以通过它的offset属性传入一个Offset偏移量就好了
4.图片红点以及导航栏红点
Q:怎么实现红点显示在图片上?
A:我们可以通过万能的Stack来实现,我们可以用Container包裹,设置一个较大的宽和高,然后里面放上图片,再通过Positioned把小红点放在右上角
参见下面实现方式:
Container( height: 43, width: 43, child: Stack(children: <Widget>[ Positioned( left: 0, bottom: 0, child: ClipRRect( borderRadius: BorderRadius.circular(4), child: Image.network( imgUrl fit: BoxFit.cover, height: 40, width: 40, ))), Positioned( right: 0, top: 0, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(4), border: Border.fromBorderSide( BorderSide(width: 1, color: Colors.red[600]))), child: Container( color: Colors.red[600], height: 6, width: 6, ), ), ) ]), )
Q:flutter提供的BottomNavigationBar怎么实现红点?
A:你可以使用BottomNavigationBa来使用上述方式构建红点,分别设置icon和activeIcon
源码地址:ding-zou/flutter-wechat

flutter listview 滚动到底部_flutter实战项目,教你使用flutter打造仿微信app页面!...相关推荐

  1. flutter listview 滚动到底部_Flutter常用Widget详解(三)

    前言 前面两篇文章给大家介绍了Widget中对应原生开发中的一些常用基础控件,Text.TextField.Button.Dialog.Picker等,本篇我们将和大家一起学习ListView.Gri ...

  2. flutter listview 滚动到底部_Flutter系列之Flex布局详解

    PS:长期坚持是一件很难的事. Flutter 是 Google 推出的跨平台 UI 框架,可以快速地在 Android 和 IOS 上构建高质量的应用程序,其主要特点是 Flutter 具有快速开发 ...

  3. flutter listview 滚动到底部_??一个高颜值Flutter版WanAndroid客户端

    1. 前言 ❝ 项目地址: https://github.com/xfhy/WanAndroid-Flutter ❞ 前段时间抽了点业余时间学了点Flutter入门,打算写个简单项目练练手.说实话,只 ...

  4. flutter滚动到底部_flutter ScrollController如何滚动到底部?

    flutter ScrollController滚动到底部的示例代码如下: 方式一:import 'package:flutter/scheduler.dart'; import 'package:f ...

  5. 安卓学习专栏——实战项目酷欧天气(4)给天气页面加上背景图片

    步骤 系列文章 前言 实现效果 项目结构 1.获取必应每日一图 1.1修改修改activity_weather.xml 1.2修改WeatherActivity 2.背景图和状态栏效果修改 2.1修改 ...

  6. 高仿微信APP实战(一)-Actionbar的制作与应用

    高仿微信APP实战(一)-Actionbar的制作与应用 本文是仿微信app实战系列的第一部分,先从简单的做起,边做边学习.从顶部actionbar开始,先看一下效果图: 一.定义主题样式 <r ...

  7. flutter listview 滚动到指定位置_Flutter 布局原理及实战

    1. Flutter UI架构 Flutter将视图数据抽象成为三个部分,即Widget树.Element树和RenderObject树. Widget树:控件的配置信息,不涉及渲染,更新代价极低. ...

  8. [转]ListView滚动到底部自动加载数据

    转自:http://blog.csdn.net/shineflowers/article/details/41744241 在Android中有很多时候会选择用ListView加载数据,有的是分批加载 ...

  9. Flutter ListView滚动到指定条目

    找遍全网没有看到listview滚动到指定条目的方法,基本都是通过条目的高度计算达到效果.这样比较麻烦.通过研究发现一种简单的方法,但是不能使用listview组件,需要使用SingleChildSc ...

最新文章

  1. 从前台页面取参数到sql的like中比较时参数的预处理
  2. (转载)BeanUtils.copyProperties() 用法
  3. iOS开发 tabBarController选中状态
  4. 赖美云的认证照_真人秀及综艺类双榜单TOP10嘉宾热度认证 赖美云双面魅力引热议...
  5. rpc结构错误_结构性错误
  6. sqlmap地表最强sql注入检测工具学习使用
  7. 大数据开发笔记(五):Zookeeper
  8. 用u盘安装黑苹果10.12.3
  9. SQL语句详解(五)——SQL字段修饰符
  10. python读取二进制文件_Python读写二进制文件
  11. PHP简易留言板项目
  12. java实现短信验证码发送功能
  13. 新概念英语(第一册)复习(原文及全文翻译)——Lesson 111 - Lesson 130
  14. 基于WIFI信号的呼吸和心率检测(论文总结)
  15. 【Qt】动态刷新lcdNumber显示的值
  16. 复杂交通流对混合交通的影响研究多向车流量分析
  17. 克莱姆V(克莱姆相关系数、克莱姆关联系数、独立系数)的MATLAB计算
  18. Java面向对象知识点小结
  19. akka入门系列-0. 概述
  20. [创业] 美国互联网广告07年总开支255亿美元, 增长27%

热门文章

  1. C++ 多线程 atomic
  2. 码云、coding拉取项目代码
  3. android开发之播放音乐的方法
  4. 嵌入式操作系统内核原理和开发(优先级的修改)
  5. 随想录(构建自己的代码库)
  6. typedef和define的用法和区别
  7. xcode java mac_mac 下常用命令(xcode常用命令,环境相关等)
  8. t-testpython_Python-56 用numpy和scipy.stats 进行t-test检验 2020-09-05
  9. php 5.6 闭包,PHP 闭包那点事儿
  10. 软件关闭excel但是进程中还存在原因_从软件视角看波音737事故系列述评之一:软件普适化下的能力建设...