Skip to main content

Check Available Connection

note

Implementation Date: OUT/23

Version: 1.0.0+1

Description Methods

  • _getInternetStatus: verifica manualmente se há conexão com a internet;
  • _getConnectionStatus: é uma stream que pode ser assinada. Ela fornecerá o status periódico da conexão com a internet;
  • _hasListeners: retorna se existem assinantes na stream;
  • _closeStream: fecha definivamente a stream;

Observações

Este pacote verifica se realmente o dispositivo está com conexão ativa. Os métodos são baseados em pings em diferentes destinos.

Implementation Class

class InternetConnectionCheckerService {
InternetConnectionCheckerService._internal();

static final InternetConnectionCheckerService _instance =
InternetConnectionCheckerService._internal();

static InternetConnectionCheckerService get instance => _instance;

final InternetConnectionChecker _checker = InternetConnectionChecker();

StreamController<bool> controller = StreamController();

Future<bool> get checkInternetStatus => _getInternetStatus();

Stream<bool> get getStatus => _getConnectionStatus();

bool get hasListeners => _hasListeners();

void get close => _closeStream();

Future<bool> _getInternetStatus() async {
return _checker.hasConnection;
}

Stream<bool> _getConnectionStatus() async* {
_getStatusFromPlugIn().onData((status) {
switch (status) {
case InternetConnectionStatus.connected:
controller.sink.add(true);
break;
case InternetConnectionStatus.disconnected:
controller.sink.add(false);
break;
}
});

yield* controller.stream;
}

StreamSubscription<InternetConnectionStatus> _getStatusFromPlugIn() {
return _checker.onStatusChange.listen((status) {
switch (status) {
case InternetConnectionStatus.connected:
break;
case InternetConnectionStatus.disconnected:
break;
}
});
}

bool _hasListeners() {
return controller.hasListener;
}

void _closeStream() {
controller.close();
}
}
danger

Contribuitor: BrAcInhO