Flutter BLoC(flutter_bloc插件)在输入焦点上有奇怪的行为。额外状态呼叫

时间:2019-02-18 13:45:19

标签: flutter bloc

我对理解BLoC模式中的一种行为有疑问。使用flutter_bloc插件

我基于以下项目创建了一个项目:https://felangel.github.io/bloc/#/flutterlogintutorial

没什么特别的。我有两个带有按钮的页面,可以在它们之间进行导航。因此,如果我转到第二页,然后返回登录页面,并专注于任何输入字段,则会看到一个额外的输出(“状态”);

分步操作:

  1. 启动应用-> flutter调试控制台:LoginInitial
  2. 按“第二页”
  3. 按“登录页面”-> flutter调试控制台:LoginInitial
  4. 关注任何输入字段-> flutter调试控制台:LoginInitial

任何想法为什么会在第四步发生?

登录页面:

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

0 个答案:

没有答案