标签:return SearchDelegate BuildContext 搜索 context child override extends Flutter
搜索欄
import 'package:flutter/material.dart'; typedef SearchItemCall = void Function(String item); class SearchBarDelegate extends SearchDelegate<String> { @override List<Widget> buildActions(BuildContext context) { //右侧显示内容 这里放清除按钮 return [ IconButton( icon: Icon(Icons.clear), onPressed: () { query = ""; showSuggestions(context); }, ), ]; } @override Widget buildLeading(BuildContext context) { //左侧显示内容 这里放了返回按钮 return IconButton( icon: AnimatedIcon( icon: AnimatedIcons.menu_arrow, progress: transitionAnimation), onPressed: () { if (query.isEmpty) { close(context, null); } else { query = ""; showSuggestions(context); } }, ); } @override Widget buildResults(BuildContext context) { //点击了搜索显示的页面 return Center( child: Text('123'), ); } @override Widget buildSuggestions(BuildContext context) { //点击了搜索窗显示的页面 return SearchContentView(); } @override ThemeData appBarTheme(BuildContext context) { return super.appBarTheme(context); } } class SearchContentView extends StatefulWidget { @override _SearchContentViewState createState() => _SearchContentViewState(); } class _SearchContentViewState extends State<SearchContentView> { @override Widget build(BuildContext context) { return Container( padding: EdgeInsets.all(10), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[ Container( child: Text( '大家都在搜', style: TextStyle(fontSize: 16), ), ), SearchItemView(), Container( margin: EdgeInsets.only(top: 20), child: Text( '历史记录', style: TextStyle(fontSize: 16), ), ), SearchItemView() ], ), ); } } class SearchItemView extends StatefulWidget { @override _SearchItemViewState createState() => _SearchItemViewState(); } class _SearchItemViewState extends State<SearchItemView> { List<String> items = [ 'index', 'order', 'main', '123123', '5test', ]; @override Widget build(BuildContext context) { return Container( child: Wrap( spacing: 10, // runSpacing: 0, children: items.map((item) { return SearchItem(title: item); }).toList(), ), ); } } class SearchItem extends StatefulWidget { @required final String title; const SearchItem({Key key, this.title}) : super(key: key); @override _SearchItemState createState() => _SearchItemState(); } class _SearchItemState extends State<SearchItem> { @override Widget build(BuildContext context) { return Container( child: InkWell( child: Chip( label: Text(widget.title), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10) ), ), onTap: () { print(widget.title); }, ), color: Colors.white, ); } }
main
body: Center( child: InkWell( child: Icon(Icons.search), onTap: (){ showSearch(context: context,delegate: SearchBarDelegate()); }, ) ),
标签:return,SearchDelegate,BuildContext,搜索,context,child,override,extends,Flutter 来源: https://www.cnblogs.com/ssjf/p/11806387.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。