flutter-freaccess-hub/lib/blocs/connectivity_bloc/connectivity_bloc.dart

38 lines
1.1 KiB
Dart

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<ConnectivityEvent, ConnectivityState> {
final Connectivity _connectivity;
late StreamSubscription<List<ConnectivityResult>> _connectivitySubscription;
ConnectivityBloc(this._connectivity) : super(ConnectivityInitial()) {
on<ConnectivityChanged>(_onConnectivityChanged);
_connectivitySubscription = _connectivity.onConnectivityChanged.listen(
(List<ConnectivityResult> result) {
add(ConnectivityChanged(result.first));
},
);
}
void _onConnectivityChanged(
ConnectivityChanged event, Emitter<ConnectivityState> emit) {
if (event.result == ConnectivityResult.none) {
emit(ConnectivityFailure());
} else {
emit(ConnectivitySuccess());
}
}
@override
Future<void> close() {
_connectivitySubscription.cancel();
return super.close();
}
}