diff --git a/lib/components/kanji/kanji_search_body.dart b/lib/components/kanji/kanji_search_body.dart index 7d36752..e4046b7 100644 --- a/lib/components/kanji/kanji_search_body.dart +++ b/lib/components/kanji/kanji_search_body.dart @@ -93,9 +93,17 @@ class _KanjiSearchBodyState extends State AnimatedSizeAndFade( fadeDuration: const Duration(milliseconds: 200), sizeDuration: const Duration(milliseconds: 300), - child: _controller.value == 1 + child: (_controller.value == 1 && suggestions.isNotEmpty) ? KanjiGrid(suggestions: suggestions) - : const KanjiSearchOptionsBar(), + : (_controller.value == 1) + ? const Text( + 'Type a kanji to start searching', + style: TextStyle( + fontSize: 16, + color: Colors.grey, + ), + ) + : const KanjiSearchOptionsBar(), ), ], ), diff --git a/lib/components/kanji/kanji_search_body/kanji_search_bar.dart b/lib/components/kanji/kanji_search_body/kanji_search_bar.dart index c919115..4483fdc 100644 --- a/lib/components/kanji/kanji_search_body/kanji_search_bar.dart +++ b/lib/components/kanji/kanji_search_body/kanji_search_bar.dart @@ -53,7 +53,6 @@ class KanjiSearchBarState extends State { onChanged: (text) => onChanged(), onSubmitted: (_) => {}, decoration: InputDecoration( - prefixIcon: const Icon(Icons.search), hintText: 'Search', border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), diff --git a/lib/components/search/search_bar.dart b/lib/components/search/search_bar.dart index dd9ceda..f0ae021 100644 --- a/lib/components/search/search_bar.dart +++ b/lib/components/search/search_bar.dart @@ -1,10 +1,19 @@ import 'package:flutter/material.dart'; +import '../../models/themes/theme.dart'; import '../../routing/routes.dart'; import 'language_selector.dart'; class SearchBar extends StatelessWidget { - const SearchBar({Key? key}) : super(key: key); + final TextEditingController controller = TextEditingController(); + + SearchBar({Key? key}) : super(key: key); + + void _search(BuildContext context, String text) => Navigator.pushNamed( + context, + Routes.search, + arguments: text, + ); @override Widget build(BuildContext context) { @@ -13,17 +22,34 @@ class SearchBar extends StatelessWidget { child: Column( children: [ TextField( - onSubmitted: (text) => - Navigator.pushNamed(context, Routes.search, arguments: text), - controller: TextEditingController(), + onSubmitted: (text) => _search(context, text), + controller: controller, decoration: InputDecoration( labelText: 'Search', border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), ), + suffixIconConstraints: const BoxConstraints.tightFor(height: 60), + suffixIcon: Material( + borderRadius: const BorderRadius.only( + topRight: Radius.circular(10.0), + bottomRight: Radius.circular(10.0), + ), + color: AppTheme.jishoGreen.background, + child: IconButton( + onPressed: () { + if (controller.text.isNotEmpty) + _search(context, controller.text); + }, + icon: const Icon( + Icons.search, + color: Colors.white, + ), + ), + ), ), ), - const SizedBox(height: 10.0), + const SizedBox(height: 20), const LanguageSelector() ], ), diff --git a/lib/screens/search/search_view.dart b/lib/screens/search/search_view.dart index d68be17..95f8f2f 100644 --- a/lib/screens/search/search_view.dart +++ b/lib/screens/search/search_view.dart @@ -8,9 +8,7 @@ class SearchView extends StatelessWidget { Widget build(BuildContext context) { return Column( mainAxisAlignment: MainAxisAlignment.center, - children: const [ - SearchBar(), - ], + children: [SearchBar()], ); } } diff --git a/pubspec.lock b/pubspec.lock index 9ab5a3e..2b24453 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -285,7 +285,7 @@ packages: name: flutter_svg url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.3" flutter_test: dependency: "direct dev" description: flutter @@ -407,7 +407,7 @@ packages: name: just_audio_web url: "https://pub.dartlang.org" source: hosted - version: "0.4.2" + version: "0.4.3" logging: dependency: transitive description: