Flutter_開發手機應用筆記3_SearchBar
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | import 'package:flutter/material.dart'; class HomePage extends StatefulWidget{ _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage>{ @override Widget build(BuildContext context) { // TODO: implement build return Scaffold( appBar: AppBar( title: Text('首頁'), actions: [ IconButton( icon: Icon(Icons.search), onPressed: (){ showSearch(context: context, delegate: CustomSearch()); }, ) ], ), body: Container(), ); } } class CustomSearch extends SearchDelegate{ List<String> allData = [ 'badminton','bacteria','audience','awake','clinic','contract', 'democratic','desirable','awful','author','aware','award','description' ]; @override List<Widget>? buildActions(BuildContext context) { // TODO: implement buildActions return [ IconButton( icon: Icon(Icons.clear), onPressed: (){ query = ''; }, ) ]; } @override Widget? buildLeading(BuildContext context) { // TODO: implement buildLeading return IconButton( icon: Icon(Icons.arrow_back), onPressed: (){ close(context, null); }, ); } @override Widget buildResults(BuildContext context) { // TODO: implement buildResults List<String> matchQuery = []; for(var item in allData){ if(item.toLowerCase().contains(query.toLowerCase())){ matchQuery.add(item); } } return ListView.builder( itemCount: matchQuery.length, itemBuilder: (context,index){ var result = matchQuery[index]; return ListTile( title: Text(result), ); }, ); } @override Widget buildSuggestions(BuildContext context) { // TODO: implement buildSuggestions List<String> matchQuery = []; for(var item in allData){ if(item.toLowerCase().contains(query.toLowerCase())){ matchQuery.add(item); } } return ListView.builder( itemCount: matchQuery.length, itemBuilder: (context,index){ var result = matchQuery[index]; return ListTile( title: Text(result), ); }, ); } } |
留言
張貼留言