Flutter开发学习课程携程app开发(三)
1.效果展示
需要实现的功能:
- 自定义一个
SearchBar
, 它在主页和搜索页会呈现不同的状态显示。- 在搜索框中无输入的时候显示一个语音小图标,有输入的时候显示一个清除图标。
- 在 HomePage 首页中,用一个 Stack 将
appBar
叠加在内容区的上方,通过监听NotificationListener
的滚动来改变appBar
的背景色。- 在搜索界面中
SearchPage
中,实现了一个快搜的功能,并且高亮
搜索的关键字
,通过 ListView 来展示搜索的结果。
学习到的知识点:
- 自定义搜索框
Widget
,在不同的界面展示不同的效果。- 实现快搜功能,根据输入的
keyword
及时查询接口展示。- 关键字高亮处理
TextSpan
的使用。- 常用输入控件
TextField
的使用,监听输入结果进行快搜过滤。
2.关键代码说明
1.搜索接口数据请求:
import 'dart:async';import 'package:dio/dio.dart';
import 'package:flutter_trip2/model/search_model.dart';const SEARCH_URL ='https://m.ctrip.com/restapi/h5api/searchapp/search?source=mobileweb&action=autocomplete&contentType=json&keyword=';/// 搜索接口
class SearchDao {static Future<SearchModel> fetch(String keyword) async {Response response = await Dio().get(SEARCH_URL + keyword);if (response.statusCode == 200) {// 只有当输入的内容与服务端返回的内容一致时才渲染SearchModel model = SearchModel.fromJson(response.data);model.keyword = keyword;return model;} else {throw Exception('Failed to load search');}}
}
2.自定义 SearchBar
:
在
HomePage
中,通过滑动页面改变appBar
的背景透明度:
1.关键代码如下:
2.searchBar
的实现:
3.完整代码
SearchBar完整代码GitHub地址
3.searchPage
页面实现:
1.根据输入的内容进行快搜
将搜索的关键字保存,当请求成功后做一个比对,相同才进行渲染。
2.搜索的内容展示
内容展示区由一个 ListView 来承载。每个 Item 布局 左边是一个分类的图标展示。右侧是一个 Title 的标题 和一个 SubTitle 的分类。并对关键搜索的关键词进行高亮展示。
1.高亮展示,首先将关键词在搜索结果中切出来,然后对结果进行拼接。
2.定义 Title 样式
3.定义副标题样式
4.根据每个 Item 的类型匹配对应的图标
在 assets
目录下存有对应的类型图标文件,我们通过 AssetImage
去加载对应的图片,记得在 pubspec.yaml 中导入它
3.完整代码地址
SearchPage 完整代码
3.搜索框的实现涉及到的代码
通过Git提交记录可以看到每次的修改点。
Flutter开发学习课程携程app开发(三)相关推荐
- Flutter开发学习课程携程app开发(完)
1.Flutter 列表选择器插件 1. 推荐插件:azlistview Flutter 城市列表.联系人列表,索引&悬停.基于scrollable_positioned_list.AzLis ...
- Flutter开发学习课程携程app开发(一)
引言 数据来源mooc网学习视频课程. 1.页面数据 1.数据展示 接口地址: json 格式 对应的数据界面展示效果: 2.数据请求 应用Dio进行数据请求:home_dao.dart 在 配置文件 ...
- Flutter开发学习课程携程app开发(二)
1.旅拍界面展示 2.界面布局 顶部是 TabBar 配合 TabBarView 实现页面滑动翻页 TabBarView 用 Flexible 包裹 Flexible 包裹充满整个页面 内容区部分采用 ...
- RN开发实践——仿携程App(三)
文章最后附上源码地址 上一片博客链接RN开发实践--仿携程App(二) 实现首页中间的内容栏 今天实现首页中间的内容栏,原效果如下: 红框就是今天需要实现的内容 这里可以拆解成四个部分,每个部分都是由 ...
- RN开发实践——仿携程App(二)
文章最后附上源码地址 上一片博客链接RN开发实践--仿携程App(一) 实现首页的轮播图 Swiper简介 The best Swiper component for React Native.Swi ...
- RN开发实践——仿携程App(一)
文章最后附上项目地址. 1.新建项目 在控制台执行下面命令( 前提是已经搭建好react-native的开发环境 ): react-native init XieCheng // XieCheng 是 ...
- 干货 | 携程APP Native/RN内嵌Flutter UI混合开发实践和探索
作者简介 Deway,携程资深工程师,iOS客户端开发,热衷于大前端和动态化技术: Frank,携程高级工程师,关注移动端热门技术,安卓客户端开发. 前言 随着各种多端技术的蓬勃发展,如今的移动端和前 ...
- 3星|《大产品,小团队》:携程软件开发流程改进的故事
大产品,小团队:携程敏捷技术与管理转型实战 携程集团创作,作者有产品.开发.测试.PMO等多种角色.有一点比较怪异,每个章节的作者是放在书的最后部分的. 主要内容是携程的软件开发流程改进的故事.携程的 ...
- php携程 线程,携程api开发解决方法
携程api开发 本帖最后由 lziyanl 于 2014-06-03 13:53:29 编辑 如何获取上图的内容信息?在携程没找到对应接口,询问官方群,基本不搭理! ------解决方案------- ...
最新文章
- ISME | 通过长读长宏基因组测序揭示南极土壤未培养细菌的生物合成潜力
- android 按钮放中间,Android实现button居中的方法
- [杂记]对RSA算法的数学原理的一点思考
- 线性表的链式存储结构(C语言版)
- matlab如何创建callback函数_如何学好MATLAB GUI
- Java提高篇 —— Java关键字之static的四种用法
- 控制台文字对战游戏 初始版
- mysql 存储过程 out list_MySQL存储过程中的IN,OUT,INOUT类型 用法
- cmd长ping记录日志和时间_Ping记录时间的方法
- 递归算法经典实例小结(C#实现)
- 数据库系统课程设计(高校成绩管理数据库系统的设计与实现)
- nvidia驱动缓存能清理吗?
- 解决hexo博客标题出错-》title: Python问题解决 re.error: unbalanced parenthesis at pos
- python判断闰年程序_Python 判断闰年
- 联想昭阳E43闪屏|屏幕有亮线|问题交流QQ群群号
- 查询给定区域内曲面平均高程
- 如何在iPhone和iPad上的Safari中在网页上查找文本
- 7、统计字母、空格、数字 与 其它字符的个数
- 2023展望未来的stripe经验之谈
- 惠州技校那间有读计算机网络的,惠州有哪些公办职校中专学校
热门文章
- Wireshark抓包分析结果中的LG bit和IG bit
- Android_基于g-sensor的走路,跑步的识别
- 计算机右击管理在哪,电脑权限管理在哪里
- GFFcompare详解
- php jwt token刷新方案,JWT刷新token策略
- 计算机毕业设计springboot网上体育用品商城系统
- BC1.2协议以及QC2.0/3.0快充协议学习笔记
- 人事管理系统html,JSP实现简单人事管理系统
- vue+element实现鼠标移入出现按钮,并点击图片可跳转页面
- Docker操作命令汇总