繁体   English   中英

怎么把bloc换成cubit?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM