我对理解BLoC模式中的一种行为有疑问。使用flutter_bloc插件
我基于以下项目创建了一个项目:https://felangel.github.io/bloc/#/flutterlogintutorial
没什么特别的。我有两个带有按钮的页面,可以在它们之间进行导航。因此,如果我转到第二页,然后返回登录页面,并专注于任何输入字段,则会看到一个额外的输出(“状态”);
分步操作:
任何想法为什么会在第四步发生?
登录页面:
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,
),
],
),
);
},
);
}