Flutter BLoC(плагин flutter_bloc) странное поведение при фокусировке ввода. Дополнительный государственный вызов
У меня проблема с пониманием одного поведения в шаблоне BLoC. Использование плагина flutter_bloc
Я сделал проект на основе этого: https://felangel.github.io/bloc/
Ничего особенного. У меня есть две страницы с кнопками для навигации между ними. Так что, если я перейду на вторую страницу, а затем вернусь на страницу входа и сосредоточусь на любом поле ввода, я увижу один дополнительный вывод ("состояние");
Шаг за шагом:
- Запустите приложение -> консоль отладки флаттера: LoginInitial
- Нажмите "Вторая страница"
- Нажмите "Страница входа" -> консоль отладки флаттера: LoginInitial
- Сосредоточьтесь на любом поле ввода -> консоль отладки флаттера: LoginInitial
Есть идеи, почему это происходит на 4-м шаге?
Страница авторизации:
Widget build(BuildContext context) {
return BlocBuilder<LoginEvent, LoginState>(
bloc: _loginBloc,
builder: (
BuildContext context,
LoginState state,
) {
print(' $state');
if (state is LoginFailure) {
_onWidgetDidBuild(() {
Scaffold.of(context).showSnackBar(
SnackBar(
content: Text('${state.error}'),
backgroundColor: Colors.red,
),
);
});
}
return Form(
child: Column(
children: [
TextFormField(
decoration: InputDecoration(labelText: 'username'),
controller: _usernameController,
),
TextFormField(
decoration: InputDecoration(labelText: 'password'),
controller: _passwordController,
obscureText: true,
),
RaisedButton(
onPressed:
state is! LoginLoading ? _onLoginButtonPressed : null,
child: Text('Login'),
),
Container(
child:
state is LoginLoading ? CircularProgressIndicator() : null,
),
],
),
);
},
);
}
Полный проект: https://github.com/ViktorKirjanov/flutter_login_issue