From c64dca182d8ac89aa838987be11254efca22a31a Mon Sep 17 00:00:00 2001 From: Ellet Date: Thu, 28 May 2026 01:38:39 +0300 Subject: [PATCH 1/4] docs(connectivity_plus): fix typo in onConnectivityChanged --- .../connectivity_plus/lib/connectivity_plus.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart b/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart index cef5ddee13..cf02dd7139 100644 --- a/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart +++ b/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart @@ -46,7 +46,7 @@ class Connectivity { /// case where [ConnectivityResult.none] is present. /// /// This method applies [Stream.distinct] over the received events to ensure - /// only emiting when connectivity changes. + /// only emitting when connectivity changes. Stream> get onConnectivityChanged { return _platform.onConnectivityChanged.distinct((a, b) => a.equals(b)); } From fa0ed3e2d54595520b0221ee2a9d57e6916a7f6d Mon Sep 17 00:00:00 2001 From: Ellet Date: Thu, 28 May 2026 01:43:00 +0300 Subject: [PATCH 2/4] docs(connectivity_plus_platform_interface): add List.hasConnectivity --- .../lib/connectivity_plus.dart | 2 +- .../lib/src/enums.dart | 5 +++++ .../pubspec.yaml | 1 + .../test/src/enums_test.dart | 22 +++++++++++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 packages/connectivity_plus/connectivity_plus_platform_interface/test/src/enums_test.dart diff --git a/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart b/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart index cf02dd7139..88a32ab61a 100644 --- a/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart +++ b/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart @@ -9,7 +9,7 @@ import 'package:collection/collection.dart'; // Export enums from the platform_interface so plugin users can use them directly. export 'package:connectivity_plus_platform_interface/connectivity_plus_platform_interface.dart' - show ConnectivityResult; + show ConnectivityResult, ConnectivityResultListX; export 'src/connectivity_plus_linux.dart' if (dart.library.js_interop) 'src/connectivity_plus_web.dart'; diff --git a/packages/connectivity_plus/connectivity_plus_platform_interface/lib/src/enums.dart b/packages/connectivity_plus/connectivity_plus_platform_interface/lib/src/enums.dart index 5c6701006d..eac0450579 100644 --- a/packages/connectivity_plus/connectivity_plus_platform_interface/lib/src/enums.dart +++ b/packages/connectivity_plus/connectivity_plus_platform_interface/lib/src/enums.dart @@ -36,3 +36,8 @@ enum ConnectivityResult { /// Other: Device is connected to an unknown network other } + +extension ConnectivityResultListX on List { + bool get hasConnectivity => + !(length == 1 && first == ConnectivityResult.none); +} diff --git a/packages/connectivity_plus/connectivity_plus_platform_interface/pubspec.yaml b/packages/connectivity_plus/connectivity_plus_platform_interface/pubspec.yaml index daba9120f0..c6892a0400 100644 --- a/packages/connectivity_plus/connectivity_plus_platform_interface/pubspec.yaml +++ b/packages/connectivity_plus/connectivity_plus_platform_interface/pubspec.yaml @@ -17,4 +17,5 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter + test: ^1.31.0 flutter_lints: ">=4.0.0 <6.0.0" diff --git a/packages/connectivity_plus/connectivity_plus_platform_interface/test/src/enums_test.dart b/packages/connectivity_plus/connectivity_plus_platform_interface/test/src/enums_test.dart new file mode 100644 index 0000000000..dedae1da19 --- /dev/null +++ b/packages/connectivity_plus/connectivity_plus_platform_interface/test/src/enums_test.dart @@ -0,0 +1,22 @@ +import 'package:connectivity_plus_platform_interface/src/enums.dart'; +import 'package:test/test.dart'; + +void main() { + group('List<$ConnectivityResult>.hasConnectivity', () { + test('returns false when only none is present', () { + final result = [ConnectivityResult.none]; + expect(result.hasConnectivity, false, reason: 'list: $result'); + }); + + test('returns true when wifi is present', () { + final result = [ConnectivityResult.wifi]; + expect(result.hasConnectivity, true, reason: 'list: $result'); + }); + + test('returns true when multiple connections exist', () { + final result = ConnectivityResult.values.toList() + ..removeWhere((e) => e == ConnectivityResult.none); + expect(result.hasConnectivity, true, reason: 'list: $result'); + }); + }); +} From f62a52f0fb29639eb6a69d1e4325c6780c49f70a Mon Sep 17 00:00:00 2001 From: Ellet Date: Thu, 28 May 2026 01:43:58 +0300 Subject: [PATCH 3/4] docs(connectivity_plus): update doc comment of Connectivity to reflect ConnectivityResultListX in connectivity_plus_platform_interface --- .../lib/connectivity_plus.dart | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart b/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart index 88a32ab61a..5a032cbf5e 100644 --- a/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart +++ b/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart @@ -41,10 +41,20 @@ class Connectivity { /// status changes, this is a known issue that only affects simulators. /// For details see https://github.com/fluttercommunity/plus_plugins/issues/479. /// - /// The emitted list is never empty. In case of no connectivity, the list contains + /// The emitted list is never empty. + /// {@template no_connectivity_case} + /// In case of no connectivity, the list contains /// a single element of [ConnectivityResult.none]. Note also that this is the only /// case where [ConnectivityResult.none] is present. /// + /// Use `hasConnectivity` to determine whether any active network connection exists: + /// + /// ```dart + /// final result = await checkConnectivity(); + /// print(result.hasConnectivity); + /// ``` + /// {@endtemplate} + /// /// This method applies [Stream.distinct] over the received events to ensure /// only emitting when connectivity changes. Stream> get onConnectivityChanged { @@ -57,9 +67,8 @@ class Connectivity { /// make a network request, it only gives you the radio status. Instead, listen /// for connectivity changes via [onConnectivityChanged] stream. /// - /// The returned list is never empty. In case of no connectivity, the list contains - /// a single element of [ConnectivityResult.none]. Note also that this is the only - /// case where [ConnectivityResult.none] is present. + /// The returned list is never empty. + /// {@macro no_connectivity_case} Future> checkConnectivity() { return _platform.checkConnectivity(); } From 6f6923d3e324b27b3dd3aac1663b0df05269f917 Mon Sep 17 00:00:00 2001 From: Ellet Date: Wed, 8 Jul 2026 01:56:09 +0300 Subject: [PATCH 4/4] docs(connectivity_plus): document in README, example app, and the hasConnectivity extension getter --- .../connectivity_plus/README.md | 5 +++++ .../connectivity_plus/example/lib/main.dart | 4 ++++ .../lib/connectivity_plus.dart | 17 ++++------------- .../lib/src/enums.dart | 1 + 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/connectivity_plus/connectivity_plus/README.md b/packages/connectivity_plus/connectivity_plus/README.md index 1a4990116d..b97f80d2ab 100644 --- a/packages/connectivity_plus/connectivity_plus/README.md +++ b/packages/connectivity_plus/connectivity_plus/README.md @@ -40,6 +40,11 @@ import 'package:connectivity_plus/connectivity_plus.dart'; final List connectivityResult = await (Connectivity().checkConnectivity()); +// Determines whether any active network connection exists. +if (connectivityResult.hasConnectivity) { + // Connectivity available (regardless of the underlying transport). +} + // This condition is for demo purposes only to explain every connection type. // Use conditions which work for your requirements. if (connectivityResult.contains(ConnectivityResult.mobile)) { diff --git a/packages/connectivity_plus/connectivity_plus/example/lib/main.dart b/packages/connectivity_plus/connectivity_plus/example/lib/main.dart index 29927da5dc..67fc4689b0 100644 --- a/packages/connectivity_plus/connectivity_plus/example/lib/main.dart +++ b/packages/connectivity_plus/connectivity_plus/example/lib/main.dart @@ -101,6 +101,10 @@ class _MyHomePageState extends State { mainAxisSize: MainAxisSize.min, children: [ const Spacer(flex: 2), + Text(_connectionStatus.hasConnectivity + ? 'Connectivity available' + : 'No connectivity'), + const Spacer(flex: 2), Text( 'Active connection types:', style: Theme.of(context).textTheme.headlineMedium, diff --git a/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart b/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart index 5a032cbf5e..88a32ab61a 100644 --- a/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart +++ b/packages/connectivity_plus/connectivity_plus/lib/connectivity_plus.dart @@ -41,20 +41,10 @@ class Connectivity { /// status changes, this is a known issue that only affects simulators. /// For details see https://github.com/fluttercommunity/plus_plugins/issues/479. /// - /// The emitted list is never empty. - /// {@template no_connectivity_case} - /// In case of no connectivity, the list contains + /// The emitted list is never empty. In case of no connectivity, the list contains /// a single element of [ConnectivityResult.none]. Note also that this is the only /// case where [ConnectivityResult.none] is present. /// - /// Use `hasConnectivity` to determine whether any active network connection exists: - /// - /// ```dart - /// final result = await checkConnectivity(); - /// print(result.hasConnectivity); - /// ``` - /// {@endtemplate} - /// /// This method applies [Stream.distinct] over the received events to ensure /// only emitting when connectivity changes. Stream> get onConnectivityChanged { @@ -67,8 +57,9 @@ class Connectivity { /// make a network request, it only gives you the radio status. Instead, listen /// for connectivity changes via [onConnectivityChanged] stream. /// - /// The returned list is never empty. - /// {@macro no_connectivity_case} + /// The returned list is never empty. In case of no connectivity, the list contains + /// a single element of [ConnectivityResult.none]. Note also that this is the only + /// case where [ConnectivityResult.none] is present. Future> checkConnectivity() { return _platform.checkConnectivity(); } diff --git a/packages/connectivity_plus/connectivity_plus_platform_interface/lib/src/enums.dart b/packages/connectivity_plus/connectivity_plus_platform_interface/lib/src/enums.dart index eac0450579..d279dd3cf6 100644 --- a/packages/connectivity_plus/connectivity_plus_platform_interface/lib/src/enums.dart +++ b/packages/connectivity_plus/connectivity_plus_platform_interface/lib/src/enums.dart @@ -38,6 +38,7 @@ enum ConnectivityResult { } extension ConnectivityResultListX on List { + /// Returns whether any active network connection exists. bool get hasConnectivity => !(length == 1 && first == ConnectivityResult.none); }