-
テキストフィールドとリストビューを使用する方法:
- 検索するテキストフィールドを作成します。これはユーザーが検索語句を入力するためのものです。
- リストビューには、検索結果を表示するためのリストアイテムが含まれます。
- テキストフィールドの入力が変更されるたびに、検索語句を使ってリストアイテムをフィルタリングします。
- フィルタリングされた結果をリストビューに表示します。
以下は、上記の方法のコード例です:
class SearchPage extends StatefulWidget { @override _SearchPageState createState() => _SearchPageState(); } class _SearchPageState extends State<SearchPage> { List<String> blogPosts = [ "Flutter検索機能の実装方法", "Flutterのアニメーションの使い方", "Flutterウィジェットの一覧", // ... 他のブログ投稿 ]; List<String> filteredPosts = []; void filterPosts(String searchTerm) { setState(() { filteredPosts = blogPosts .where((post) => post.toLowerCase().contains(searchTerm.toLowerCase())) .toList(); }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("ブログ検索"), ), body: Column( children: [ TextField( onChanged: (value) => filterPosts(value), decoration: InputDecoration( labelText: '検索', ), ), Expanded( child: ListView.builder( itemCount: filteredPosts.length, itemBuilder: (context, index) { return ListTile( title: Text(filteredPosts[index]), ); }, ), ), ], ), ); } }
上記のコードでは、
SearchPage
というウィジェットを作成し、TextField
とListView
を使用して検索機能を実装しています。filterPosts
メソッドは、検索語句に基づいて投稿をフィルタリングし、filteredPosts
リストに格納します。リストビューは、フィルタリングされた投稿を表示します。 -
ライブラリの使用: Flutterには、検索機能を簡単に実装するためのサードパーティ製のライブラリもあります。例えば、
flutter_search_bar
やflutter_typeahead
などがあります。これらのライブラリを使用することで、より高度な検索機能を実装することができます。以下は、
flutter_search_bar
ライブラリを使用したコード例です:import 'package:flutter_search_bar/flutter_search_bar.dart'; class SearchPage extends StatefulWidget { @override _SearchPageState createState() => _SearchPageState(); } class _SearchPageState extends State<SearchPage> { SearchBar searchBar; List<String> blogPosts = [ "Flutter検索機能の実装方法", "Flutterのアニメーションの使い方", "Flutterウィジェットの一覧", // ... 他のブログ投稿 ]; List<String> filteredPosts = []; @override void initState() { super.initState(); searchBar = SearchBar( inBar: true, setState: setState, onSubmitted: filterPosts, buildDefaultAppBar: buildAppBar, ); } void filterPosts(String searchTerm) { setState(() { filteredPosts = blogPosts .where((post) => post.toLowerCase().contains(searchTerm.toLowerCase())) .toList(); }); } AppBar buildAppBar(BuildContext context) { return AppBar( title: Text('ブログ検索'), actions: [searchBar.getSearchAction(context)], ); } @override Widget build(BuildContext context) { return Scaffold( appBar: searchBar.build(context), body: ListView.builder( itemCount: filteredPosts.length, itemBuilder: (context, index) { return ListTile( title: Text(filteredPosts[index]), ); }, ), ); } }
上記のコードでは、
flutter_search_bar
ライブラリを使用して検索バーを作成し、SearchBar
ウィジェットをカスタマイズして検索機能を実装しています。filterPosts
メソッドは、検索語句に基づいて投稿をフィルタリングし、filteredPosts
リストに格納します。リストビューは、フィルタリングされた投稿を表示します。
以上の方法を使用することで、Flutterで検索機能を実装することができます。必要に応じて、コードをカスタマイズして要件に合わせて調整してください。