如何多次触发具有相同状态的集团侦听器?
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...
- 在您的两个 NetworkErrorState 之间发出不同的状态。按下“再试一次按钮”(被调用的函数)可能首先发出例如重试连接状态。你的 ui 可以显示一些不错的东西吗?
或者...
- 另一种解决方法是传递一个状态发生变化的额外变量,这样它就不会被识别为相同的状态(确保 equatable 属性考虑了该变量)。它可以例如是重新连接尝试次数或上次重试时的时间戳。
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...
- 在您的两个 NetworkErrorState 之间发出不同的状态。按下“再试一次按钮”(被调用的函数)可能首先发出例如重试连接状态。你的 ui 可以显示一些不错的东西吗?
或者...
- 另一种解决方法是传递一个状态发生变化的额外变量,这样它就不会被识别为相同的状态(确保 equatable 属性考虑了该变量)。它可以例如是重新连接尝试次数或上次重试时的时间戳。