From 8a785c77e9dfe3235773df58cc8acc1ec12f7222 Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Wed, 28 Feb 2024 14:30:22 +0100 Subject: [PATCH 1/9] remove js dep, add web: ^0.5.0 dep --- packages/connectivity_plus/connectivity_plus/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/connectivity_plus/connectivity_plus/pubspec.yaml b/packages/connectivity_plus/connectivity_plus/pubspec.yaml index 8e04c8569a..f3df1d8a4b 100644 --- a/packages/connectivity_plus/connectivity_plus/pubspec.yaml +++ b/packages/connectivity_plus/connectivity_plus/pubspec.yaml @@ -33,7 +33,7 @@ dependencies: flutter_web_plugins: sdk: flutter connectivity_plus_platform_interface: ^1.2.4 - js: ^0.6.4 + web: ^0.5.0 meta: ^1.8.0 nm: ^0.5.0 From 86b02a7893232f9f8d18a4c71eb7be11a854178a Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Wed, 28 Feb 2024 15:12:33 +0100 Subject: [PATCH 2/9] wip migrating to dart:web --- .../lib/src/web/dart_html_connectivity_plugin.dart | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart b/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart index d5c0c68bf8..efd710d073 100644 --- a/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart +++ b/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart @@ -1,5 +1,7 @@ import 'dart:async'; -import 'dart:html' as html show window; +// import 'dart:js'; +// import 'dart:html' as html show window; +import 'package:web/web.dart'; import 'package:connectivity_plus_platform_interface/connectivity_plus_platform_interface.dart'; @@ -10,7 +12,7 @@ class DartHtmlConnectivityPlugin extends ConnectivityPlusWebPlugin { /// Checks the connection status of the device. @override Future checkConnectivity() async { - return (html.window.navigator.onLine ?? false) + return (window.navigator.onLine) ? ConnectivityResult.wifi : ConnectivityResult.none; } @@ -23,10 +25,10 @@ class DartHtmlConnectivityPlugin extends ConnectivityPlusWebPlugin { if (_connectivityResult == null) { _connectivityResult = StreamController.broadcast(); // Fallback to dart:html window.onOnline / window.onOffline - html.window.onOnline.listen((event) { + window.ononline.listen((event) { _connectivityResult!.add(ConnectivityResult.wifi); }); - html.window.onOffline.listen((event) { + window.onoffline.listen((event) { _connectivityResult!.add(ConnectivityResult.none); }); } From e2e0995992faba85cf79c05e56bbd9b1ccbe1793 Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Wed, 28 Feb 2024 16:06:50 +0100 Subject: [PATCH 3/9] listen to events using package:web --- .../lib/src/web/dart_html_connectivity_plugin.dart | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart b/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart index efd710d073..9de110ebd3 100644 --- a/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart +++ b/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart @@ -1,6 +1,4 @@ import 'dart:async'; -// import 'dart:js'; -// import 'dart:html' as html show window; import 'package:web/web.dart'; import 'package:connectivity_plus_platform_interface/connectivity_plus_platform_interface.dart'; @@ -25,10 +23,10 @@ class DartHtmlConnectivityPlugin extends ConnectivityPlusWebPlugin { if (_connectivityResult == null) { _connectivityResult = StreamController.broadcast(); // Fallback to dart:html window.onOnline / window.onOffline - window.ononline.listen((event) { + const EventStreamProvider('online').forTarget(window).listen((_) { _connectivityResult!.add(ConnectivityResult.wifi); }); - window.onoffline.listen((event) { + const EventStreamProvider('offline').forTarget(window).listen((_) { _connectivityResult!.add(ConnectivityResult.none); }); } From b7a2fb2cb593e052dc395d9daf6a2936290789cd Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Wed, 28 Feb 2024 16:12:36 +0100 Subject: [PATCH 4/9] Use EventStreamProviders --- .../lib/src/web/dart_html_connectivity_plugin.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart b/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart index 9de110ebd3..9944361134 100644 --- a/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart +++ b/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart @@ -23,10 +23,10 @@ class DartHtmlConnectivityPlugin extends ConnectivityPlusWebPlugin { if (_connectivityResult == null) { _connectivityResult = StreamController.broadcast(); // Fallback to dart:html window.onOnline / window.onOffline - const EventStreamProvider('online').forTarget(window).listen((_) { + EventStreamProviders.onlineEvent.forTarget(window).listen((_) { _connectivityResult!.add(ConnectivityResult.wifi); }); - const EventStreamProvider('offline').forTarget(window).listen((_) { + EventStreamProviders.offlineEvent.forTarget(window).listen((_) { _connectivityResult!.add(ConnectivityResult.none); }); } From 920e3c5061d225ae99ac3347557b5cc0bcac9bb2 Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Wed, 28 Feb 2024 16:25:03 +0100 Subject: [PATCH 5/9] add removed dependency --- packages/connectivity_plus/connectivity_plus/pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/connectivity_plus/connectivity_plus/pubspec.yaml b/packages/connectivity_plus/connectivity_plus/pubspec.yaml index f3df1d8a4b..cabec75af8 100644 --- a/packages/connectivity_plus/connectivity_plus/pubspec.yaml +++ b/packages/connectivity_plus/connectivity_plus/pubspec.yaml @@ -33,6 +33,7 @@ dependencies: flutter_web_plugins: sdk: flutter connectivity_plus_platform_interface: ^1.2.4 + js: ^0.6.7 web: ^0.5.0 meta: ^1.8.0 nm: ^0.5.0 From 0f840301f42c457512627f16a3c232b67a3b15ca Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Wed, 28 Feb 2024 16:27:56 +0100 Subject: [PATCH 6/9] remove comment --- .../lib/src/web/dart_html_connectivity_plugin.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart b/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart index 9944361134..97a4a12ff3 100644 --- a/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart +++ b/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart @@ -22,7 +22,6 @@ class DartHtmlConnectivityPlugin extends ConnectivityPlusWebPlugin { Stream get onConnectivityChanged { if (_connectivityResult == null) { _connectivityResult = StreamController.broadcast(); - // Fallback to dart:html window.onOnline / window.onOffline EventStreamProviders.onlineEvent.forTarget(window).listen((_) { _connectivityResult!.add(ConnectivityResult.wifi); }); From ab34b1f22675b9e2d93484bc96dd7e2458d2c205 Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Wed, 28 Feb 2024 19:34:21 +0100 Subject: [PATCH 7/9] package:web support for 0.3 to 0.6 --- .../lib/src/web/dart_html_connectivity_plugin.dart | 8 ++++++-- packages/connectivity_plus/connectivity_plus/pubspec.yaml | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart b/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart index 97a4a12ff3..b72c91e401 100644 --- a/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart +++ b/packages/connectivity_plus/connectivity_plus/lib/src/web/dart_html_connectivity_plugin.dart @@ -1,4 +1,8 @@ import 'dart:async'; +// Used in web: 0.3.0, deprecated later. +// Remove when increasing min web version. +// ignore: deprecated_member_use +import 'package:web/helpers.dart'; import 'package:web/web.dart'; import 'package:connectivity_plus_platform_interface/connectivity_plus_platform_interface.dart'; @@ -22,10 +26,10 @@ class DartHtmlConnectivityPlugin extends ConnectivityPlusWebPlugin { Stream get onConnectivityChanged { if (_connectivityResult == null) { _connectivityResult = StreamController.broadcast(); - EventStreamProviders.onlineEvent.forTarget(window).listen((_) { + const EventStreamProvider('online').forTarget(window).listen((_) { _connectivityResult!.add(ConnectivityResult.wifi); }); - EventStreamProviders.offlineEvent.forTarget(window).listen((_) { + const EventStreamProvider('offline').forTarget(window).listen((_) { _connectivityResult!.add(ConnectivityResult.none); }); } diff --git a/packages/connectivity_plus/connectivity_plus/pubspec.yaml b/packages/connectivity_plus/connectivity_plus/pubspec.yaml index cabec75af8..65282cdd18 100644 --- a/packages/connectivity_plus/connectivity_plus/pubspec.yaml +++ b/packages/connectivity_plus/connectivity_plus/pubspec.yaml @@ -34,7 +34,7 @@ dependencies: sdk: flutter connectivity_plus_platform_interface: ^1.2.4 js: ^0.6.7 - web: ^0.5.0 + web: '>=0.3.0 <=0.6.0' meta: ^1.8.0 nm: ^0.5.0 From a7945aeda0790793c93e7d839723dd7f31ae0e64 Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Wed, 28 Feb 2024 19:37:16 +0100 Subject: [PATCH 8/9] set dart sdk min version to 3.2.0 as required by web 0.3 --- packages/connectivity_plus/connectivity_plus/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/connectivity_plus/connectivity_plus/pubspec.yaml b/packages/connectivity_plus/connectivity_plus/pubspec.yaml index 65282cdd18..c62fe9a419 100644 --- a/packages/connectivity_plus/connectivity_plus/pubspec.yaml +++ b/packages/connectivity_plus/connectivity_plus/pubspec.yaml @@ -6,7 +6,7 @@ repository: https://github.com/fluttercommunity/plus_plugins/tree/main/packages/ issue_tracker: https://github.com/fluttercommunity/plus_plugins/labels/connectivity_plus environment: - sdk: ">=2.18.0 <4.0.0" + sdk: ">=3.2.0 <4.0.0" flutter: ">=3.3.0" flutter: From d0a4cd93c1fea209e63c6166d94f773442d8b6a0 Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Wed, 28 Feb 2024 19:45:25 +0100 Subject: [PATCH 9/9] removed unused class and dependency --- .../lib/src/connectivity_plus_web.dart | 14 --- ...k_information_api_connectivity_plugin.dart | 92 ------------------- .../connectivity_plus/pubspec.yaml | 1 - 3 files changed, 107 deletions(-) delete mode 100644 packages/connectivity_plus/connectivity_plus/lib/src/web/network_information_api_connectivity_plugin.dart diff --git a/packages/connectivity_plus/connectivity_plus/lib/src/connectivity_plus_web.dart b/packages/connectivity_plus/connectivity_plus/lib/src/connectivity_plus_web.dart index 01511c02be..d2f35d5d10 100644 --- a/packages/connectivity_plus/connectivity_plus/lib/src/connectivity_plus_web.dart +++ b/packages/connectivity_plus/connectivity_plus/lib/src/connectivity_plus_web.dart @@ -8,20 +8,6 @@ class ConnectivityPlusWebPlugin extends ConnectivityPlatform { /// Factory method that initializes the connectivity plugin platform with an instance /// of the plugin for the web. static void registerWith(Registrar registrar) { - // Since the `NetworkInformationApi` is currently an experimental API and - // does not provide a reliable way to check a connectivity change - // from an online state to an offline state, - // its implementation is disabled for now. - // See also: https://developer.mozilla.org/en-US/docs/Web/API/Network_Information_API - // - // TODO: use `NetworkInformationApiConnectivityPlugin.isSupported()` when it becomes a stable DOM API. - // const isSupported = false; - // if (isSupported) { - // ConnectivityPlatform.instance = NetworkInformationApiConnectivityPlugin(); - // } else { - // ConnectivityPlatform.instance = DartHtmlConnectivityPlugin(); - // } - ConnectivityPlatform.instance = DartHtmlConnectivityPlugin(); } } diff --git a/packages/connectivity_plus/connectivity_plus/lib/src/web/network_information_api_connectivity_plugin.dart b/packages/connectivity_plus/connectivity_plus/lib/src/web/network_information_api_connectivity_plugin.dart deleted file mode 100644 index bc822a76a6..0000000000 --- a/packages/connectivity_plus/connectivity_plus/lib/src/web/network_information_api_connectivity_plugin.dart +++ /dev/null @@ -1,92 +0,0 @@ -import 'dart:async'; -import 'dart:html' as html show window, NetworkInformation; -import 'dart:js_util'; - -import 'package:connectivity_plus/src/web/utils/connectivity_result.dart'; -import 'package:connectivity_plus_platform_interface/connectivity_plus_platform_interface.dart'; -import 'package:flutter/foundation.dart'; -import 'package:js/js.dart'; - -import '../connectivity_plus_web.dart'; - -/// The web implementation of the ConnectivityPlatform of the Connectivity plugin. -class NetworkInformationApiConnectivityPlugin - extends ConnectivityPlusWebPlugin { - final html.NetworkInformation _networkInformation; - - /// A check to determine if this version of the plugin can be used. - static bool isSupported() => html.window.navigator.connection != null; - - /// The constructor of the plugin. - NetworkInformationApiConnectivityPlugin() - : this.withConnection(html.window.navigator.connection!); - - /// Creates the plugin, with an override of the NetworkInformation object. - @visibleForTesting - NetworkInformationApiConnectivityPlugin.withConnection( - html.NetworkInformation connection) - : _networkInformation = connection; - - /// Checks the connection status of the device. - @override - Future checkConnectivity() async { - return networkInformationToConnectivityResult(_networkInformation); - } - - StreamController? _connectivityResultStreamController; - late Stream _connectivityResultStream; - - /// Returns a Stream of ConnectivityResults changes. - @override - Stream get onConnectivityChanged { - // use fallback implementation if [_connectionSupported] is not availible - if (_connectionSupported == null) { - return _webPseudoStream(); - } - if (_connectivityResultStreamController == null) { - _connectivityResultStreamController = - StreamController(); - setProperty(_networkInformation, 'onchange', allowInterop((_) { - _connectivityResultStreamController! - .add(networkInformationToConnectivityResult(_networkInformation)); - })); - // ignore: todo - // TODO: Implement the above with _networkInformation.onChange: - // _networkInformation.onChange.listen((_) { - // _connectivityResult - // .add(networkInformationToConnectivityResult(_networkInformation)); - // }); - // Once we can detect when to *cancel* a subscription to the _networkInformation - // onChange Stream upon hot restart. - // https://github.com/dart-lang/sdk/issues/42679 - _connectivityResultStream = - _connectivityResultStreamController!.stream.asBroadcastStream(); - } - return _connectivityResultStream; - } - - /// stores the last fallback network state - ConnectivityResult? _lastFallbackState; - - /// periodically checks the current network state - Stream _webPseudoStream() { - final StreamController webStream = - StreamController.broadcast(); - Timer.periodic( - const Duration(milliseconds: 250), - (timer) async { - final result = await checkConnectivity(); - if (result != _lastFallbackState) { - webStream.add(result); - } - }, - ); - return webStream.stream; - } -} - -/// accesses the JS-native `navigator.connection` -/// -/// ensures `navigator.connection.onchange` is availible -@JS("navigator.connection") -external get _connectionSupported; diff --git a/packages/connectivity_plus/connectivity_plus/pubspec.yaml b/packages/connectivity_plus/connectivity_plus/pubspec.yaml index c62fe9a419..6f00e788f4 100644 --- a/packages/connectivity_plus/connectivity_plus/pubspec.yaml +++ b/packages/connectivity_plus/connectivity_plus/pubspec.yaml @@ -33,7 +33,6 @@ dependencies: flutter_web_plugins: sdk: flutter connectivity_plus_platform_interface: ^1.2.4 - js: ^0.6.7 web: '>=0.3.0 <=0.6.0' meta: ^1.8.0 nm: ^0.5.0