Line data Source code
1 : import 'dart:async';
2 :
3 : import 'package:internet_connection_checker/internet_connection_checker.dart';
4 :
5 : /// Listener class that returns a Stream<True> if internet connection is on in the running device, Stream<False> if internet gets disconnected.
6 : /// Sample usage
7 : /// ```
8 : /// ConnectivityListener().subscribe().listen((isConnected) {
9 : /// if (isConnected) {
10 : /// print('connection available');
11 : /// } else {
12 : /// print('connection lost');
13 : /// }
14 : /// });
15 : /// ```
16 : class ConnectivityListener {
17 : late StreamSubscription _listener;
18 :
19 : /// Listen to [InternetConnectionChecker.onStatusChange] and returns Stream<True> whenever
20 : /// internet connection is online. Returns Stream<False> if internet connection is lost.
21 1 : Stream<bool> subscribe() {
22 1 : final _controller = StreamController<bool>();
23 4 : _listener = InternetConnectionChecker().onStatusChange.listen((status) {
24 : switch (status) {
25 0 : case InternetConnectionStatus.connected:
26 0 : _controller.add(true);
27 : break;
28 0 : case InternetConnectionStatus.disconnected:
29 0 : _controller.add(false);
30 : break;
31 : }
32 : });
33 1 : return _controller.stream;
34 : }
35 :
36 : /// Cancels the active subscription to [InternetConnectionChecker]
37 0 : void unSubscribe() {
38 0 : _listener.cancel();
39 : }
40 : }
|