![](/img/trans.png)
[英]Convert Default Flutter_bloc 8.0 Counter from Cubit to Bloc
[英]How to convert bloc to cubit?
我使用 bloc 但我想将此代码重新制作成cubit
因为我不必使用事件,我可以删除它们。 我试图这样做,但出现错误并且代码不起作用,但我不明白我可能错在哪里。 如果您能帮助我正确传达告诉我,我将不胜感激,我怎样才能正确地将 bloc 转换为cubit
(我不必使用事件)?
集团
class ConnectedBloc extends Bloc<ConnectedEvent, ConnectedState> {
StreamSubscription? subscription;
ConnectedBloc() : super(ConnectedInitial()) {
on<OnConnectedEvent>((event, emit) => emit(ConnectedSucess()));
on<OnNotConnectedEvent>((event, emit) => emit(ConnectedFailure()));
var resultCon = Connectivity().checkConnectivity();
if (resultCon == ConnectivityResult.wifi ||
resultCon == ConnectivityResult.mobile) {
add(OnConnectedEvent());
} else {
add(OnNotConnectedEvent());
}
Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
if (result == ConnectivityResult.wifi ||
result == ConnectivityResult.mobile) {
add(OnConnectedEvent());
} else {
add(OnNotConnectedEvent());
}
});
@override
Future<void> close() {
subscription?.cancel();
return super.close();
}
}
}
事件
abstract class ConnectedEvent {}
class OnConnectedEvent extends ConnectedEvent {}
class OnNotConnectedEvent extends ConnectedEvent {}
状态
abstract class ConnectedState {}
class ConnectedInitial extends ConnectedState {}
class ConnectedSucess extends ConnectedState {}
class ConnectedFailure extends ConnectedState {}
家
home: BlocConsumer<ConnectedBloc, ConnectedState>(
listener: ((context, state) {
if (state is ConnectedFailure) {
删除您的事件类并从Cubit
而不是Bloc
扩展ConnectivityCubit
类。
abstract class ConnectedState {}
class ConnectedInitial extends ConnectedState {}
class ConnectedSuccess extends ConnectedState {}
class ConnectedFailure extends ConnectedState {}
class ConnectivityCubit extends Cubit<ConnectedState> {
late final StreamSubscription connectivityStreamSubscription;
final Connectivity connectivity = Connectivity();
ConnectivityCubit() : super(ConnectedInitial()) {
connectivityStreamSubscription =
connectivity.onConnectivityChanged.listen((result) {
if (result == ConnectivityResult.wifi ||
result == ConnectivityResult.mobile) {
emit(ConnectedSuccess());
} else {
emit(ConnectedFailure());
}
});
}
@override
Future<void> close() {
connectivityStreamSubscription.cancel();
return super.close();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.