38 lines
1.1 KiB
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();
|
|
}
|
|
}
|