Placed keyboard logic inside bloc listener

This commit is contained in:
Oystein Kristoffer Tveit 2020-07-22 14:13:53 +02:00
parent 76d2b090f3
commit 689983b848
2 changed files with 41 additions and 27 deletions

View File

@ -32,7 +32,6 @@ class _Suggestion extends StatelessWidget {
Widget build(BuildContext context) {
return InkWell(
onTap: () {
FocusScope.of(context).unfocus(); //Puts away the keyboard
BlocProvider.of<KanjiBloc>(context).add(GetKanji(_kanji));
},
child: Container(

View File

@ -9,11 +9,19 @@ import 'package:jisho_study_tool/components/loading.dart';
class KanjiView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocBuilder<KanjiBloc, KanjiState>(
return BlocListener<KanjiBloc, KanjiState>(
listener: (context, state) {
if (state is KanjiSearchInitial) {
FocusScope.of(context).unfocus();
} else if (state is KanjiSearchLoading) {
FocusScope.of(context).unfocus();
}
},
child: BlocBuilder<KanjiBloc, KanjiState>(
builder: (context, state) {
if (state is KanjiSearchInitial)
if (state is KanjiSearchInitial) {
return Container();
else if (state is KanjiSearchInput)
} else if (state is KanjiSearchInput)
return KanjiSuggestions(state.kanjiSuggestions);
else if (state is KanjiSearchLoading)
return LoadingScreen();
@ -21,11 +29,13 @@ class KanjiView extends StatelessWidget {
return WillPopScope(
child: KanjiResultCard(state.kanji),
onWillPop: () async {
BlocProvider.of<KanjiBloc>(context).add(ReturnToInitialState());
BlocProvider.of<KanjiBloc>(context)
.add(ReturnToInitialState());
return false;
});
throw 'No such event found';
},
),
);
}
}
@ -38,14 +48,14 @@ class KanjiViewBar extends StatelessWidget {
children: [
IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () => BlocProvider.of<KanjiBloc>(context)
.add(ReturnToInitialState()),
onPressed: () =>
BlocProvider.of<KanjiBloc>(context).add(ReturnToInitialState()),
),
Expanded(
child: Container(
padding: EdgeInsets.symmetric(vertical: 10.0),
child: TextField(
onChanged: (text) => BlocProvider.of<KanjiBloc>(context).add(GetKanjiSuggestions(text)),
onChanged: (text) => BlocProvider.of<KanjiBloc>(context)
.add(GetKanjiSuggestions(text)),
onSubmitted: (text) =>
BlocProvider.of<KanjiBloc>(context).add(GetKanji(text)),
decoration: new InputDecoration(
@ -54,7 +64,12 @@ class KanjiViewBar extends StatelessWidget {
fillColor: Colors.white,
filled: true,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(100.0)),
borderRadius: BorderRadius.circular(100.0),
),
contentPadding: EdgeInsets.symmetric(vertical: 10.0),
isDense: false),
style: TextStyle(
fontSize: 14.0,
),
),
),