Flutter BLoC (плагин flutter_bloc) странное поведение при фокусировке ввода.Дополнительный государственный вызов - PullRequest
0 голосов
/ 18 февраля 2019

У меня проблема с пониманием одного поведения в шаблоне BLoC.Используя плагин flutter_bloc

Я создал проект, основанный на этом: https://felangel.github.io/bloc/#/flutterlogintutorial

Ничего особенного.У меня есть две страницы с кнопками для навигации между ними.Поэтому, если я перейду на вторую страницу, а затем вернусь на страницу входа и сконцентрируюсь на любом поле ввода, я увижу один дополнительный вывод ('' state ');

Пошагово:

  1. Запустите приложение -> консоль отладки флаттера: ? LoginInitial
  2. Нажмите «Вторая страница»
  3. Нажмите «Страница входа» -> консоль отладки флаттера: ? LoginInitial
  4. Сосредоточьтесь на любом поле ввода -> консоль отладки флаттера: ? 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

...