在登录 View 中,如果用户在没有插入凭据的情况下点击登录按钮,则 LoginFailState 为 yield 并且 View 对其使用react。如果他再次点击,这个 LoginFailstate 又是 yield ,但 View 不会对它使用react。那么,有没有办法在相同的状态下产生更多倍的结果?
有一些代码可以更好地解释我的情况:
class LoginBloc extends Bloc<LoginEvent, LoginState> {
@override
LoginState get initialState => LoginUninitialized();
@override
Stream<LoginState> mapEventToState(LoginEvent event) {
if (event is loginButtonPressed) {
yield LoginFailState();
}
}
看法:
@override
Widget build(BuildContext context) {
return BlocBuilder(
bloc: _loginBloc,
builder: (BuildContext context, LoginState state) {
if (state is LoginFail) {
print ('Login fail');
}
return Column(
...
)
最佳答案
如果您不扩展 Equitable,或者实现您自己的“==”逻辑使两个 LoginFailStates 相等,您可以收到“相同”状态的更新。
解决方案是在两者之间产生一个不同的状态,就像在 Bloc 示例中一样。
yield LoginLoading();
每次点击登录按钮时都会调用它。 Felangel's LoginBloc example.
关于flutter - Bloc:是否有可能产生 2 次相同的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56850693/