From bd87af4a38aa85a0700213283e0c3f452e8f6fd1 Mon Sep 17 00:00:00 2001 From: h7x4abk3g Date: Tue, 14 Jul 2020 14:33:21 +0200 Subject: [PATCH] Add search bar to title bar --- lib/main.dart | 22 ++++++++--- lib/screens/kanji_search.dart | 69 +++++++++++++++++++++-------------- 2 files changed, 58 insertions(+), 33 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 2d3e205..7e91207 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,8 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:jisho_study_tool/bloc/kanji/kanji_bloc.dart'; import 'package:jisho_study_tool/screens/kanji_search.dart'; import 'package:jisho_study_tool/screens/history.dart'; import 'package:jisho_study_tool/screens/search.dart'; +import 'bloc/search/search_bloc.dart'; + void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @@ -14,7 +18,13 @@ class MyApp extends StatelessWidget { theme: ThemeData( primarySwatch: Colors.blue, ), - home: Home(), + home: MultiBlocProvider( + providers: [ + BlocProvider(create: (context) => SearchBloc()), + BlocProvider(create: (context) => KanjiBloc()), + ], + child: Home(), + ), ); } } @@ -82,14 +92,14 @@ class Page { Widget content; Widget titleBar; - Page({ this.content,this.titleBar,}); + Page({ + this.content, + this.titleBar, + }); } final List pages = [ - Page( - content: SearchView(), - titleBar: Text('Search') - ), + Page(content: SearchView(), titleBar: Text('Search')), Page( content: KanjiView(), titleBar: KanjiViewBar(), diff --git a/lib/screens/kanji_search.dart b/lib/screens/kanji_search.dart index 1a60ff6..148f8d7 100644 --- a/lib/screens/kanji_search.dart +++ b/lib/screens/kanji_search.dart @@ -6,24 +6,17 @@ import 'package:jisho_study_tool/components/kanji/kanji__search_page/kanji_searc import 'package:jisho_study_tool/components/loading.dart'; class KanjiView extends StatelessWidget { - @override - Widget build(BuildContext context) { - return BlocProvider( - create: (context) => KanjiBloc(), - child: _KanjiSearchPage(), - ); - } -} - -class _KanjiSearchPage extends StatelessWidget { @override Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { - if (state is KanjiSearchInitial) return KanjiSearchBar(); - else if (state is KanjiSearchLoading) return LoadingScreen(); - else if (state is KanjiSearchFinished) return KanjiResultCard(state.kanji); - + if (state is KanjiSearchInitial) + return Container(); + else if (state is KanjiSearchLoading) + return LoadingScreen(); + else if (state is KanjiSearchFinished) + return KanjiResultCard(state.kanji); + throw 'No such event found'; }, ); @@ -31,23 +24,45 @@ class _KanjiSearchPage extends StatelessWidget { } class KanjiViewBar extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Text('Kanji'); - } -} - -class KanjiSearchBar extends StatelessWidget { @override Widget build(BuildContext context) { return Center( - child: TextField( - onSubmitted: (text) => BlocProvider.of(context).add(GetKanji(text)), - decoration: new InputDecoration( - prefixIcon: Icon(Icons.search), - hintText: 'Search for kanji' + child: Container( + child: Row( + children: [ + IconButton( + icon: Icon(Icons.arrow_back), + onPressed: () => BlocProvider.of(context) + .add(ReturnToInitialState()), + ), + Expanded( + child: Padding( + padding: EdgeInsets.symmetric(vertical: 10.0), + child: TextField( + onSubmitted: (text) => + BlocProvider.of(context).add(GetKanji(text)), + decoration: new InputDecoration( + prefixIcon: Icon(Icons.search), + hintText: 'Search for kanji', + fillColor: Colors.white, + filled: true, + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(100.0)), + ), + ), + ), + ), + IconButton( + icon: Icon(Icons.star_border), + onPressed: null, + ), + IconButton( + icon: Icon(Icons.add), + onPressed: null, + ), + ], ), ), ); } -} \ No newline at end of file +}