import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:equatable/equatable.dart'; part 'connectivity_event.dart'; part 'connectivity_state.dart'; class ConnectivityBloc extends Bloc { final Connectivity _connectivity; late StreamSubscription> _connectivitySubscription; ConnectivityBloc(this._connectivity) : super(ConnectivityInitial()) { on(_onConnectivityChanged); _connectivitySubscription = _connectivity.onConnectivityChanged.listen( (List result) { add(ConnectivityChanged(result.first)); }, ); } void _onConnectivityChanged( ConnectivityChanged event, Emitter emit) { if (event.result == ConnectivityResult.none) { emit(ConnectivityFailure()); } else { emit(ConnectivitySuccess()); } } @override Future close() { _connectivitySubscription.cancel(); return super.close(); } }