如何多次触发具有相同状态的集团侦听器?

How to trigger bloc listener with the same state multiple time?

My bloc returns NetworkErrorState 如果没有互联网连接。它将显示一个带有 'Try Again' 按钮的小部件。当我在仍然没有互联网连接的情况下按下按钮时,它将 return 相同的状态和相同的消息和失败。我将如何以相同的状态再次触发 bloc 侦听器?

集团国家:

 class NetworkErrorState extends MyBlocState {
      final String message;
      final Failure failure;
    
      NetworkErrorState ({this.failure, this.message});
      @override
      List<Object> get props => [failure, message];
    }

异常:

class ServerException implements Exception {
  final String message;

  ServerException({this.message});
}

失败:

abstract class Failure extends Equatable {
  final List properties = const <dynamic>[];
  Failure([properties]);

  @override
  List<Object> get props => properties;
}

class ServerFailure extends Failure {
  final String message;

  ServerFailure({this.message});
  @override
  List<Object> get props => [message];
}

我不认为这是设计使然。但我看到两个非常可行的选择。我可能会选择 1...

  1. 在您的两个 NetworkErrorState 之间发出不同的状态。按下“再试一次按钮”(被调用的函数)可能首先发出例如重试连接状态。你的 ui 可以显示一些不错的东西吗?

或者...

  1. 另一种解决方法是传递一个状态发生变化的额外变量,这样它就不会被识别为相同的状态(确保 equatable 属性考虑了该变量)。它可以例如是重新连接尝试次数或上次重试时的时间戳。