Flutter: SearchDelegate 委托showSearch定义搜索页面的内容
class _MyHomeState extends State<MyHome> {
List<String> _list = List.generate(100, (i) => 'item $i');
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Search'),
actions: <Widget>[
Builder(
builder: (context) {
return IconButton(
icon: Icon(Icons.search),
onPressed: () async {
String r = await showSearch<String>(
context: context,
delegate: ListSearchPage(_list),
);
Scaffold.of(context).showSnackBar(
SnackBar(
content: Text(r),
action: SnackBarAction(
label: 'CLOSE',
onPressed: () {
},
),
),
);
},
);
},
)
],
),
body: ListView(
children: <Widget>[
for (var el in _list)
ListTile(
title: Text(el),
),
],
),
);
}
}
class ListSearchPage extends SearchDelegate<String> {
List<String> list;
String select;
ListSearchPage(this.list);
@override
appBarTheme(BuildContext context) {
return Theme.of(context);
}
@override
List<Widget> buildActions(BuildContext context) {
return [
IconButton(
icon: Icon(Icons.close),
onPressed: () {
query = '';
},
),
];
}
@override
Widget buildLeading(BuildContext context) {
return IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () {
close(context, '');
},
);
}
/// 用户从搜索页面提交搜索后显示的结果
@override
Widget buildResults(BuildContext context) {
var filterList = list.where((String s) => s.contains(query.trim()));
return ListView(
children: <Widget>[
for (String item in filterList)
ListTile(
leading: Icon(
Icons.message,
color: Colors.blue,
),
title: Text(
item,
style: Theme.of(context).textTheme.title,
),
onTap: () {
close(context, item);
},
),
],
);
}
/// 当用户在搜索字段中键入查询时,在搜索页面正文中显示的建议
@override
Widget buildSuggestions(BuildContext context) {
var filterList = list.where((String s) => s.contains(query.trim()));
return ListView(
children: <Widget>[
for (String item in filterList)
ListTile(
leading: Icon(Icons.message),
title: Text(
item,
style: Theme.of(context).textTheme.title,
),
onTap: () {
close(context, item);
},
),
],
);
}
}
Flutter: SearchDelegate 委托showSearch定义搜索页面的内容的更多相关文章
- 15 Flutter仿京东商城项目 搜索页面布局
Search.dart import 'package:flutter/material.dart'; import 'package:flutter_jdshop/services/ScreenAd ...
- 【音乐App】—— Vue-music 项目学习笔记:搜索页面开发
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 搜索歌手歌曲 搜索历史保存 ...
- destoon公司搜索页面显示公司类型
首先找到前台模板文件:/template/default/company/search.htm 看到51行 {template 'list-company', 'tag'} 打开 /template/ ...
- 解决dede搜索页面只能显示10条信息解决方案
解决dede搜索页面只能显示10条信息解决方案,感觉显示的信息太少,这时就要想办法去解决一下.看看有什么好办法来解决一下这个问题. dede搜索页模板中,默认只能显示10条记录. 打开dede搜索页模 ...
- Umbraco中更换IndexSet中的NodeType后,搜索页面没有做出对应更改的效果
在项目开发中,使用ExternalSearcher,有一个ExamineIndex.config文件中存放ExternalIndexSet 开始时是这样的 <!-- Default Indexs ...
- 学习用java基于webMagic+selenium+phantomjs实现爬虫Demo爬取淘宝搜索页面
由于业务需要,老大要我研究一下爬虫. 团队的技术栈以java为主,并且我的主语言是Java,研究时间不到一周.基于以上原因固放弃python,选择java为语言来进行开发.等之后有时间再尝试pytho ...
- spring MVC中定义异常页面
如果我们在使用Spring MVC的过程中,想自定义异常页面的话,我们可以使用DispatcherServlet来指定异常页面,具体的做法很简单: 下面看我曾经的一个项目的spring配置文件: 1 ...
- Springboot学习05-自定义错误页面完整分析
Springboot学习06-自定义错误页面完整分析 前言 接着上一篇博客,继续分析Springboot错误页面问题 正文 1-自定义浏览器错误页面(只要将自己的错误页面放在指定的路径下即可) 1-1 ...
- C#常见委托のdelegate定义,Func,Action,Predicate总结
委托,顾名思义,就是让其他代理,本质就是为具有共性方法组定义一个方法模板:(交流可以加qq群:435226676) 委托常见的方式有一般委托显示定义,Func<T,TResult> (T, ...
随机推荐
- 你的隐私数据真的安全吗之memset()使用分析
我们在实际编程中,需要保存许多私有数据,例如:密码.密钥等等.所以,我们需要经常在使用完这些私有数据后,清除内存使用踪迹,以防止被潜在的入侵者获得这些数据.这篇文章中,我们讨论使用memset()函数 ...
- Golang简易版 网站路径扫描demo
package main import ( "bufio" "fmt" "net/http" "os" "re ...
- 前端开发规范之命名规范、html规范、css规范、js规范
在学习编程的时候,每次看到那些整齐规范的代码,心里顿时对这个程序员表示点点好感,有时,比如看到自己和朋友写的代码时,那阅读起来就是苦不堪言,所以,一些基本的开发规范是必须的,是为了自己方便阅读代码,也 ...
- kafka auto.offset.reset参数解析
kafka auto.offset.reset参数解析 1.latest和earliest区别 2.创建topic 3.生产数据和接收生产数据 4.测试代码 auto.offset.reset关乎ka ...
- 关于项目中Spring版本与jdk1.8兼容问题解决
问题描述: 在用公司的工具搭建项目时,由于使用Spring框架,同时要求jdk版本为1.8:当部署完成以后,项目总是无法运行,会报错: Context namespace element 'annot ...
- Mac变卡顿,优化性能
当调整窗口大小,同时按住"Option"键,可以从中央调整大小 同时按住"Shift"键时,可以按比例调整大小.同时按住这两个键,那么既成比例,又从中央调整大小 ...
- DEDECMS:将dedecms系统的data目录迁移到web以外目录
dedecms系统的data目录是系统缓存和配置文件的目录,一般都有可以读写的权限,只要是能够写入的目录都可能存在安全隐患,很多站长甚至给予这个目录可执行的权限,更是非常危险,所以我们建议将这个dat ...
- docker学习二
B站视频地址 3.docker的基本操作 3.1 安装docker 1.下载关于Docker的依赖环境 想安装Docker,需要先将依赖的环境全部下载下来,就像Maven依赖JDK一样 yum -y ...
- Codeforces Global Round 9 E. Inversion SwapSort
题目链接:https://codeforces.com/contest/1375/problem/E 题意 给出一个大小为 $n$ 的数组 $a$,对数组中的所有逆序对进行排序,要求按照排序后的顺序交 ...
- POJ2774 Long Long Message 【SAM】
POJ2774 Long Long Message 找两个串的最长公共字串 对其中一个串\(s\)建\(SAM\),然后我们如何找到最长公共字串,办法就是枚举\(t\)串所有的前缀,然后找各个前缀的最 ...