flutter - Bloc:是否有可能产生 2 次相同的状态?

标签 flutter state handle bloc

在登录 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/

相关文章:

dart - 有没有办法将 Future<List<String>> 转换为 List<dynamic>?

flutter - 尝试生成 proto 到 dart 文件

javascript - 将 ID 分配给 React 组件以添加到状态并在渲染函数中进行映射

terminology - "handle"究竟是什么?

c++ - 我如何知道 HANDLE 对象是否已初始化?

Flutter 出现 The method 'findRenderObject' was called on null

listview - Flutter ListView.builder 创建一个无限滚动。如何将其设置为在内容结束时停止?

android - 动态更改微调器状态

android - Dagger 2 在 Activity 停止时保存和恢复状态

sockets - Haskell句柄的非阻塞关闭