From 13be3c78e0b46f3a4af4c57acd577583ea528251 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 20 Oct 2020 13:11:03 -0700 Subject: [PATCH 01/13] platform_interface --- .../connectivity_platform_interface/CHANGELOG.md | 4 ++++ .../analysis_options.yaml | 4 ++++ .../lib/connectivity_platform_interface.dart | 6 +++--- .../lib/src/method_channel_connectivity.dart | 12 ++++++------ .../lib/src/utils.dart | 4 ++-- .../connectivity_platform_interface/pubspec.yaml | 14 +++++++++----- .../test/method_channel_connectivity_test.dart | 10 +++++----- 7 files changed, 33 insertions(+), 21 deletions(-) create mode 100644 packages/connectivity/connectivity_platform_interface/analysis_options.yaml diff --git a/packages/connectivity/connectivity_platform_interface/CHANGELOG.md b/packages/connectivity/connectivity_platform_interface/CHANGELOG.md index e45f8f7e4d99..220df045c040 100644 --- a/packages/connectivity/connectivity_platform_interface/CHANGELOG.md +++ b/packages/connectivity/connectivity_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.0-nullsafety + +* Migrate to null safety. + ## 1.0.6 * Update lower bound of dart dependency to 2.1.0. diff --git a/packages/connectivity/connectivity_platform_interface/analysis_options.yaml b/packages/connectivity/connectivity_platform_interface/analysis_options.yaml new file mode 100644 index 000000000000..3d64bb57fe49 --- /dev/null +++ b/packages/connectivity/connectivity_platform_interface/analysis_options.yaml @@ -0,0 +1,4 @@ +include: ../../../analysis_options.yaml +analyzer: + enable-experiment: + - non-nullable diff --git a/packages/connectivity/connectivity_platform_interface/lib/connectivity_platform_interface.dart b/packages/connectivity/connectivity_platform_interface/lib/connectivity_platform_interface.dart index cfd9cf648a9c..8e9f0fd6af06 100644 --- a/packages/connectivity/connectivity_platform_interface/lib/connectivity_platform_interface.dart +++ b/packages/connectivity/connectivity_platform_interface/lib/connectivity_platform_interface.dart @@ -50,17 +50,17 @@ abstract class ConnectivityPlatform extends PlatformInterface { } /// Obtains the wifi name (SSID) of the connected network - Future getWifiName() { + Future getWifiName() { throw UnimplementedError('getWifiName() has not been implemented.'); } /// Obtains the wifi BSSID of the connected network. - Future getWifiBSSID() { + Future getWifiBSSID() { throw UnimplementedError('getWifiBSSID() has not been implemented.'); } /// Obtains the IP address of the connected wifi network - Future getWifiIP() { + Future getWifiIP() { throw UnimplementedError('getWifiIP() has not been implemented.'); } diff --git a/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart b/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart index 87deaa21ea3b..e2b8f2662270 100644 --- a/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart +++ b/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart @@ -22,7 +22,7 @@ class MethodChannelConnectivity extends ConnectivityPlatform { EventChannel eventChannel = EventChannel('plugins.flutter.io/connectivity_status'); - Stream _onConnectivityChanged; + Stream? _onConnectivityChanged; /// Fires whenever the connectivity state changes. Stream get onConnectivityChanged { @@ -32,7 +32,7 @@ class MethodChannelConnectivity extends ConnectivityPlatform { .map((dynamic result) => result.toString()) .map(parseConnectivityResult); } - return _onConnectivityChanged; + return _onConnectivityChanged!; } @override @@ -43,8 +43,8 @@ class MethodChannelConnectivity extends ConnectivityPlatform { } @override - Future getWifiName() async { - String wifiName = await methodChannel.invokeMethod('wifiName'); + Future getWifiName() async { + String? wifiName = await methodChannel.invokeMethod('wifiName'); // as Android might return , uniforming result // our iOS implementation will return null if (wifiName == '') { @@ -54,12 +54,12 @@ class MethodChannelConnectivity extends ConnectivityPlatform { } @override - Future getWifiBSSID() { + Future getWifiBSSID() { return methodChannel.invokeMethod('wifiBSSID'); } @override - Future getWifiIP() { + Future getWifiIP() { return methodChannel.invokeMethod('wifiIPAddress'); } diff --git a/packages/connectivity/connectivity_platform_interface/lib/src/utils.dart b/packages/connectivity/connectivity_platform_interface/lib/src/utils.dart index 2ae22e1c9fc3..4929163d341a 100644 --- a/packages/connectivity/connectivity_platform_interface/lib/src/utils.dart +++ b/packages/connectivity/connectivity_platform_interface/lib/src/utils.dart @@ -1,7 +1,7 @@ import 'package:connectivity_platform_interface/connectivity_platform_interface.dart'; /// Convert a String to a ConnectivityResult value. -ConnectivityResult parseConnectivityResult(String state) { +ConnectivityResult parseConnectivityResult(String? state) { switch (state) { case 'wifi': return ConnectivityResult.wifi; @@ -14,7 +14,7 @@ ConnectivityResult parseConnectivityResult(String state) { } /// Convert a String to a LocationAuthorizationStatus value. -LocationAuthorizationStatus parseLocationAuthorizationStatus(String result) { +LocationAuthorizationStatus parseLocationAuthorizationStatus(String? result) { switch (result) { case 'notDetermined': return LocationAuthorizationStatus.notDetermined; diff --git a/packages/connectivity/connectivity_platform_interface/pubspec.yaml b/packages/connectivity/connectivity_platform_interface/pubspec.yaml index 5bafcf9b806b..dcb5cce67e2b 100644 --- a/packages/connectivity/connectivity_platform_interface/pubspec.yaml +++ b/packages/connectivity/connectivity_platform_interface/pubspec.yaml @@ -3,19 +3,23 @@ description: A common platform interface for the connectivity plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.6 +version: 1.1.0-nullsafety + +# Don't publish this package until null safety is stable or the package is in the allow list. +publish_to: none dependencies: flutter: sdk: flutter - meta: ^1.0.5 - plugin_platform_interface: ^1.0.1 + meta: ^1.3.0-nullsafety.3 + plugin_platform_interface: + path: ../../plugin_platform_interface dev_dependencies: flutter_test: sdk: flutter - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.1.0 <3.0.0" + sdk: '>=2.10.0-56.0.dev <3.0.0' flutter: ">=1.12.13+hotfix.5 <2.0.0" diff --git a/packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart b/packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart index 3d9c405c30ab..0c30530fc9ab 100644 --- a/packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart +++ b/packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart @@ -12,7 +12,7 @@ void main() { group('$MethodChannelConnectivity', () { final List log = []; - MethodChannelConnectivity methodChannelConnectivity; + late MethodChannelConnectivity methodChannelConnectivity; setUp(() async { methodChannelConnectivity = MethodChannelConnectivity(); @@ -42,7 +42,7 @@ void main() { .setMockMethodCallHandler((MethodCall methodCall) async { switch (methodCall.method) { case 'listen': - await ServicesBinding.instance.defaultBinaryMessenger + await ServicesBinding.instance!.defaultBinaryMessenger .handlePlatformMessage( methodChannelConnectivity.eventChannel.name, methodChannelConnectivity.eventChannel.codec @@ -64,7 +64,7 @@ void main() { }); test('getWifiName', () async { - final String result = await methodChannelConnectivity.getWifiName(); + final String? result = await methodChannelConnectivity.getWifiName(); expect(result, '1337wifi'); expect( log, @@ -78,7 +78,7 @@ void main() { }); test('getWifiBSSID', () async { - final String result = await methodChannelConnectivity.getWifiBSSID(); + final String? result = await methodChannelConnectivity.getWifiBSSID(); expect(result, 'c0:ff:33:c0:d3:55'); expect( log, @@ -92,7 +92,7 @@ void main() { }); test('getWifiIP', () async { - final String result = await methodChannelConnectivity.getWifiIP(); + final String? result = await methodChannelConnectivity.getWifiIP(); expect(result, '127.0.0.1'); expect( log, From 382a3cb7cc8808b3df0a883bb5ebcfe8ed9e1bc0 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 20 Oct 2020 14:37:42 -0700 Subject: [PATCH 02/13] draft --- packages/connectivity/connectivity/analysis_options.yaml | 4 ++++ packages/connectivity/connectivity/pubspec.yaml | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 packages/connectivity/connectivity/analysis_options.yaml diff --git a/packages/connectivity/connectivity/analysis_options.yaml b/packages/connectivity/connectivity/analysis_options.yaml new file mode 100644 index 000000000000..32ff54f2748c --- /dev/null +++ b/packages/connectivity/connectivity/analysis_options.yaml @@ -0,0 +1,4 @@ +include: ../../../analysis_options.yaml +analyzer: + enable-experiment: + - non-nullable \ No newline at end of file diff --git a/packages/connectivity/connectivity/pubspec.yaml b/packages/connectivity/connectivity/pubspec.yaml index bb2752078069..6cff5ffb14f5 100644 --- a/packages/connectivity/connectivity/pubspec.yaml +++ b/packages/connectivity/connectivity/pubspec.yaml @@ -24,7 +24,8 @@ dependencies: flutter: sdk: flutter meta: ^1.0.5 - connectivity_platform_interface: ^1.0.2 + connectivity_platform_interface: + path: ../connectivity_platform_interface connectivity_macos: ^0.1.0 connectivity_for_web: ^0.3.0 @@ -37,7 +38,8 @@ dev_dependencies: integration_test: path: ../../integration_test mockito: ^4.1.1 - plugin_platform_interface: ^1.0.0 + plugin_platform_interface: + path: ../../plugin_platform_interface pedantic: ^1.8.0 environment: From 12ead11dda8ab66474072fee31d49c6d28d002bf Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 20 Oct 2020 15:48:37 -0700 Subject: [PATCH 03/13] draft --- packages/connectivity/connectivity/pubspec.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/connectivity/connectivity/pubspec.yaml b/packages/connectivity/connectivity/pubspec.yaml index 6cff5ffb14f5..547d9afd0f09 100644 --- a/packages/connectivity/connectivity/pubspec.yaml +++ b/packages/connectivity/connectivity/pubspec.yaml @@ -26,8 +26,9 @@ dependencies: meta: ^1.0.5 connectivity_platform_interface: path: ../connectivity_platform_interface - connectivity_macos: ^0.1.0 - connectivity_for_web: ^0.3.0 + #TODO(cyanglaz): re-endorse the below plugins when they have migrated to nnbd. + # connectivity_macos: ^0.1.0 + # connectivity_for_web: ^0.3.0 dev_dependencies: flutter_test: From a552dba19e4d2896ea3c69ccf8c71d7a6a8d40a7 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 20 Oct 2020 19:20:30 -0700 Subject: [PATCH 04/13] migrate --- packages/connectivity/connectivity/CHANGELOG.md | 4 ++++ .../connectivity/example/analysis_options.yaml | 4 ++++ .../connectivity/example/lib/main.dart | 8 ++++---- .../connectivity/connectivity/example/pubspec.yaml | 4 ++-- .../integration_test/connectivity_test.dart | 2 +- .../connectivity/lib/connectivity.dart | 10 +++++----- packages/connectivity/connectivity/pubspec.yaml | 14 +++++++++----- .../connectivity/test/connectivity_test.dart | 4 ++-- 8 files changed, 31 insertions(+), 19 deletions(-) create mode 100644 packages/connectivity/connectivity/example/analysis_options.yaml diff --git a/packages/connectivity/connectivity/CHANGELOG.md b/packages/connectivity/connectivity/CHANGELOG.md index e737d9201372..d727543a2af5 100644 --- a/packages/connectivity/connectivity/CHANGELOG.md +++ b/packages/connectivity/connectivity/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.0-nullsafety + +* Migrate to null safety. + ## 0.4.9+5 * Update android compileSdkVersion to 29. diff --git a/packages/connectivity/connectivity/example/analysis_options.yaml b/packages/connectivity/connectivity/example/analysis_options.yaml new file mode 100644 index 000000000000..4998f4a28343 --- /dev/null +++ b/packages/connectivity/connectivity/example/analysis_options.yaml @@ -0,0 +1,4 @@ +analyzer: + enable-experiment: + - non-nullable + diff --git a/packages/connectivity/connectivity/example/lib/main.dart b/packages/connectivity/connectivity/example/lib/main.dart index f8486165fa70..1dba8b9c3fd4 100644 --- a/packages/connectivity/connectivity/example/lib/main.dart +++ b/packages/connectivity/connectivity/example/lib/main.dart @@ -40,7 +40,7 @@ class MyApp extends StatelessWidget { } class MyHomePage extends StatefulWidget { - MyHomePage({Key key, this.title}) : super(key: key); + MyHomePage({Key? key, required this.title}) : super(key: key); final String title; @@ -51,7 +51,7 @@ class MyHomePage extends StatefulWidget { class _MyHomePageState extends State { String _connectionStatus = 'Unknown'; final Connectivity _connectivity = Connectivity(); - StreamSubscription _connectivitySubscription; + late StreamSubscription _connectivitySubscription; @override void initState() { @@ -69,7 +69,7 @@ class _MyHomePageState extends State { // Platform messages are asynchronous, so we initialize in an async method. Future initConnectivity() async { - ConnectivityResult result; + ConnectivityResult result = ConnectivityResult.none; // Platform messages may fail, so we use a try/catch PlatformException. try { result = await _connectivity.checkConnectivity(); @@ -100,7 +100,7 @@ class _MyHomePageState extends State { Future _updateConnectionStatus(ConnectivityResult result) async { switch (result) { case ConnectivityResult.wifi: - String wifiName, wifiBSSID, wifiIP; + String? wifiName, wifiBSSID, wifiIP; try { if (!kIsWeb && Platform.isIOS) { diff --git a/packages/connectivity/connectivity/example/pubspec.yaml b/packages/connectivity/connectivity/example/pubspec.yaml index 1d07f7d19e60..976ff6e71e69 100644 --- a/packages/connectivity/connectivity/example/pubspec.yaml +++ b/packages/connectivity/connectivity/example/pubspec.yaml @@ -10,10 +10,10 @@ dependencies: dev_dependencies: flutter_driver: sdk: flutter - test: any + test: ^1.10.0-nullsafety.1 integration_test: path: ../../../integration_test - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 flutter: uses-material-design: true diff --git a/packages/connectivity/connectivity/integration_test/connectivity_test.dart b/packages/connectivity/connectivity/integration_test/connectivity_test.dart index 54a67337285a..5564bc4ccd87 100644 --- a/packages/connectivity/connectivity/integration_test/connectivity_test.dart +++ b/packages/connectivity/connectivity/integration_test/connectivity_test.dart @@ -11,7 +11,7 @@ void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); group('Connectivity test driver', () { - Connectivity _connectivity; + late Connectivity _connectivity; setUpAll(() async { _connectivity = Connectivity(); diff --git a/packages/connectivity/connectivity/lib/connectivity.dart b/packages/connectivity/connectivity/lib/connectivity.dart index a5d9f25089cf..cef083e15221 100644 --- a/packages/connectivity/connectivity/lib/connectivity.dart +++ b/packages/connectivity/connectivity/lib/connectivity.dart @@ -23,12 +23,12 @@ class Connectivity { if (_singleton == null) { _singleton = Connectivity._(); } - return _singleton; + return _singleton!; } Connectivity._(); - static Connectivity _singleton; + static Connectivity? _singleton; static ConnectivityPlatform get _platform => ConnectivityPlatform.instance; @@ -53,7 +53,7 @@ class Connectivity { /// /// From android 8.0 onwards the GPS must be ON (high accuracy) /// in order to be able to obtain the SSID. - Future getWifiName() { + Future getWifiName() { return _platform.getWifiName(); } @@ -63,12 +63,12 @@ class Connectivity { /// /// From Android 8.0 onwards the GPS must be ON (high accuracy) /// in order to be able to obtain the BSSID. - Future getWifiBSSID() { + Future getWifiBSSID() { return _platform.getWifiBSSID(); } /// Obtains the IP address of the connected wifi network - Future getWifiIP() { + Future getWifiIP() { return _platform.getWifiIP(); } diff --git a/packages/connectivity/connectivity/pubspec.yaml b/packages/connectivity/connectivity/pubspec.yaml index 547d9afd0f09..3d1ad9fe7bc8 100644 --- a/packages/connectivity/connectivity/pubspec.yaml +++ b/packages/connectivity/connectivity/pubspec.yaml @@ -5,7 +5,10 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/c # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.4.9+5 +version: 0.5.0-nullsafety + +# Don't publish this package until null safety is stable or the package is in the allow list. +publish_to: none flutter: plugin: @@ -27,7 +30,8 @@ dependencies: connectivity_platform_interface: path: ../connectivity_platform_interface #TODO(cyanglaz): re-endorse the below plugins when they have migrated to nnbd. - # connectivity_macos: ^0.1.0 + # https://github.com/flutter/flutter/issues/68669 + connectivity_macos: ^0.1.0 # connectivity_for_web: ^0.3.0 dev_dependencies: @@ -35,14 +39,14 @@ dev_dependencies: sdk: flutter flutter_driver: sdk: flutter - test: any + test: ^1.10.0-nullsafety.1 integration_test: path: ../../integration_test mockito: ^4.1.1 plugin_platform_interface: path: ../../plugin_platform_interface - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.1.0 <3.0.0" + sdk: '>=2.10.0-56.0.dev <3.0.0' flutter: ">=1.12.13+hotfix.5 <2.0.0" diff --git a/packages/connectivity/connectivity/test/connectivity_test.dart b/packages/connectivity/connectivity/test/connectivity_test.dart index 7ed2c8d7f7e2..592a3e3240b1 100644 --- a/packages/connectivity/connectivity/test/connectivity_test.dart +++ b/packages/connectivity/connectivity/test/connectivity_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 - +// TODO(cyanglaz): Remove once Mockito is migrated to null safety. +// @dart = 2.9 import 'package:connectivity/connectivity.dart'; import 'package:connectivity_platform_interface/connectivity_platform_interface.dart'; import 'package:flutter_test/flutter_test.dart'; From 23411ec3a14b1b6fcc3fea326d083abb19bd5f81 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 20 Oct 2020 19:22:38 -0700 Subject: [PATCH 05/13] lEOF --- packages/connectivity/connectivity/analysis_options.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/connectivity/connectivity/analysis_options.yaml b/packages/connectivity/connectivity/analysis_options.yaml index 32ff54f2748c..3d64bb57fe49 100644 --- a/packages/connectivity/connectivity/analysis_options.yaml +++ b/packages/connectivity/connectivity/analysis_options.yaml @@ -1,4 +1,4 @@ include: ../../../analysis_options.yaml analyzer: enable-experiment: - - non-nullable \ No newline at end of file + - non-nullable From bb6c42dc0e07d7733b1180549be9d3fa080a1c00 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 20 Oct 2020 19:23:15 -0700 Subject: [PATCH 06/13] remove extra line --- packages/connectivity/connectivity/example/analysis_options.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/connectivity/connectivity/example/analysis_options.yaml b/packages/connectivity/connectivity/example/analysis_options.yaml index 4998f4a28343..4163582097cd 100644 --- a/packages/connectivity/connectivity/example/analysis_options.yaml +++ b/packages/connectivity/connectivity/example/analysis_options.yaml @@ -1,4 +1,3 @@ analyzer: enable-experiment: - non-nullable - From ec3eca9e5fa1b1950bd313cdcaabc2d5400a2aaa Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 20 Oct 2020 19:26:04 -0700 Subject: [PATCH 07/13] custom analysis --- .../connectivity/connectivity/example/analysis_options.yaml | 3 --- script/incremental_build.sh | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 packages/connectivity/connectivity/example/analysis_options.yaml diff --git a/packages/connectivity/connectivity/example/analysis_options.yaml b/packages/connectivity/connectivity/example/analysis_options.yaml deleted file mode 100644 index 4163582097cd..000000000000 --- a/packages/connectivity/connectivity/example/analysis_options.yaml +++ /dev/null @@ -1,3 +0,0 @@ -analyzer: - enable-experiment: - - non-nullable diff --git a/script/incremental_build.sh b/script/incremental_build.sh index 15a969070950..c759138ac517 100755 --- a/script/incremental_build.sh +++ b/script/incremental_build.sh @@ -30,6 +30,8 @@ CUSTOM_ANALYSIS_PLUGINS=( "url_launcher/url_launcher_platform_interface" "device_info/device_info_platform_interface" "device_info/device_info" + "connectivity/connectivity_platform_interface" + "connectivity/connectivity" ) # Comma-separated string of the list above readonly CUSTOM_FLAG=$(IFS=, ; echo "${CUSTOM_ANALYSIS_PLUGINS[*]}") From 2a449ae91e4bbd8ff76615f9ee618e25a0e978bb Mon Sep 17 00:00:00 2001 From: cyanglaz Date: Fri, 23 Oct 2020 12:42:15 -0700 Subject: [PATCH 08/13] review --- .../lib/src/method_channel_connectivity.dart | 30 +++++++++---------- .../lib/src/utils.dart | 4 +-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart b/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart index e2b8f2662270..beb439cbd2ec 100644 --- a/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart +++ b/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart @@ -8,6 +8,7 @@ import 'package:connectivity_platform_interface/connectivity_platform_interface. import 'package:flutter/services.dart'; import 'package:meta/meta.dart'; +import 'utils.dart'; import 'utils.dart'; /// An implementation of [ConnectivityPlatform] that uses method channels. @@ -27,19 +28,18 @@ class MethodChannelConnectivity extends ConnectivityPlatform { /// Fires whenever the connectivity state changes. Stream get onConnectivityChanged { if (_onConnectivityChanged == null) { - _onConnectivityChanged = eventChannel - .receiveBroadcastStream() - .map((dynamic result) => result.toString()) - .map(parseConnectivityResult); + _onConnectivityChanged = + eventChannel.receiveBroadcastStream().map((dynamic result) { + return result != null ? result.toString() : ''; + }).map(parseConnectivityResult); } return _onConnectivityChanged!; } @override - Future checkConnectivity() { - return methodChannel - .invokeMethod('check') - .then(parseConnectivityResult); + Future checkConnectivity() async { + final String checkResult = await methodChannel.invokeMethod('check')??''; + return parseConnectivityResult(checkResult); } @override @@ -66,17 +66,17 @@ class MethodChannelConnectivity extends ConnectivityPlatform { @override Future requestLocationServiceAuthorization({ bool requestAlwaysLocationUsage = false, - }) { - return methodChannel.invokeMethod( + }) async { + final String requestLocationServiceResult = await methodChannel.invokeMethod( 'requestLocationServiceAuthorization', [ requestAlwaysLocationUsage - ]).then(parseLocationAuthorizationStatus); + ])??''; + return parseLocationAuthorizationStatus(requestLocationServiceResult); } @override - Future getLocationServiceAuthorization() { - return methodChannel - .invokeMethod('getLocationServiceAuthorization') - .then(parseLocationAuthorizationStatus); + Future getLocationServiceAuthorization() async { + final String getLocationServiceResult = await methodChannel.invokeMethod('getLocationServiceAuthorization')??''; + return parseLocationAuthorizationStatus(getLocationServiceResult); } } diff --git a/packages/connectivity/connectivity_platform_interface/lib/src/utils.dart b/packages/connectivity/connectivity_platform_interface/lib/src/utils.dart index 4929163d341a..2ae22e1c9fc3 100644 --- a/packages/connectivity/connectivity_platform_interface/lib/src/utils.dart +++ b/packages/connectivity/connectivity_platform_interface/lib/src/utils.dart @@ -1,7 +1,7 @@ import 'package:connectivity_platform_interface/connectivity_platform_interface.dart'; /// Convert a String to a ConnectivityResult value. -ConnectivityResult parseConnectivityResult(String? state) { +ConnectivityResult parseConnectivityResult(String state) { switch (state) { case 'wifi': return ConnectivityResult.wifi; @@ -14,7 +14,7 @@ ConnectivityResult parseConnectivityResult(String? state) { } /// Convert a String to a LocationAuthorizationStatus value. -LocationAuthorizationStatus parseLocationAuthorizationStatus(String? result) { +LocationAuthorizationStatus parseLocationAuthorizationStatus(String result) { switch (result) { case 'notDetermined': return LocationAuthorizationStatus.notDetermined; From fa39e74a2506ddce83818839424845131c244217 Mon Sep 17 00:00:00 2001 From: cyanglaz Date: Fri, 23 Oct 2020 12:42:51 -0700 Subject: [PATCH 09/13] format --- .../lib/src/method_channel_connectivity.dart | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart b/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart index beb439cbd2ec..8a47c819cbcb 100644 --- a/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart +++ b/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart @@ -38,7 +38,8 @@ class MethodChannelConnectivity extends ConnectivityPlatform { @override Future checkConnectivity() async { - final String checkResult = await methodChannel.invokeMethod('check')??''; + final String checkResult = + await methodChannel.invokeMethod('check') ?? ''; return parseConnectivityResult(checkResult); } @@ -67,16 +68,18 @@ class MethodChannelConnectivity extends ConnectivityPlatform { Future requestLocationServiceAuthorization({ bool requestAlwaysLocationUsage = false, }) async { - final String requestLocationServiceResult = await methodChannel.invokeMethod( - 'requestLocationServiceAuthorization', [ - requestAlwaysLocationUsage - ])??''; + final String requestLocationServiceResult = await methodChannel + .invokeMethod('requestLocationServiceAuthorization', + [requestAlwaysLocationUsage]) ?? + ''; return parseLocationAuthorizationStatus(requestLocationServiceResult); } @override Future getLocationServiceAuthorization() async { - final String getLocationServiceResult = await methodChannel.invokeMethod('getLocationServiceAuthorization')??''; + final String getLocationServiceResult = await methodChannel + .invokeMethod('getLocationServiceAuthorization') ?? + ''; return parseLocationAuthorizationStatus(getLocationServiceResult); } } From cdd42504f8a2c282b142c84800771af54bcdaff3 Mon Sep 17 00:00:00 2001 From: cyanglaz Date: Fri, 23 Oct 2020 13:45:24 -0700 Subject: [PATCH 10/13] fix version --- .../connectivity/connectivity_platform_interface/CHANGELOG.md | 2 +- .../connectivity/connectivity_platform_interface/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/connectivity/connectivity_platform_interface/CHANGELOG.md b/packages/connectivity/connectivity_platform_interface/CHANGELOG.md index 220df045c040..dec275293ef9 100644 --- a/packages/connectivity/connectivity_platform_interface/CHANGELOG.md +++ b/packages/connectivity/connectivity_platform_interface/CHANGELOG.md @@ -1,4 +1,4 @@ -## 1.1.0-nullsafety +## 2.0.0-nullsafety * Migrate to null safety. diff --git a/packages/connectivity/connectivity_platform_interface/pubspec.yaml b/packages/connectivity/connectivity_platform_interface/pubspec.yaml index dcb5cce67e2b..124825f7b386 100644 --- a/packages/connectivity/connectivity_platform_interface/pubspec.yaml +++ b/packages/connectivity/connectivity_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the connectivity plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.1.0-nullsafety +version: 2.0.0-nullsafety # Don't publish this package until null safety is stable or the package is in the allow list. publish_to: none From 09f8edf80280d49f3c6937f5d630b7bd04b790a5 Mon Sep 17 00:00:00 2001 From: cyanglaz Date: Fri, 23 Oct 2020 13:50:07 -0700 Subject: [PATCH 11/13] dart 2.9 for integarton test --- .../test_driver/integration_test/connectivity_test.dart | 3 +++ .../connectivity/integration_test/connectivity_test.dart | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/packages/connectivity/connectivity/example/test_driver/integration_test/connectivity_test.dart b/packages/connectivity/connectivity/example/test_driver/integration_test/connectivity_test.dart index d48deae3403d..3177b66ea48a 100644 --- a/packages/connectivity/connectivity/example/test_driver/integration_test/connectivity_test.dart +++ b/packages/connectivity/connectivity/example/test_driver/integration_test/connectivity_test.dart @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// TODO(cyanglaz): Remove once https://github.com/flutter/plugins/pull/3158 is landed. +// @dart = 2.9 + import 'package:integration_test/integration_test.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:connectivity/connectivity.dart'; diff --git a/packages/connectivity/connectivity/integration_test/connectivity_test.dart b/packages/connectivity/connectivity/integration_test/connectivity_test.dart index a516ccacd49e..8e2644aa603d 100644 --- a/packages/connectivity/connectivity/integration_test/connectivity_test.dart +++ b/packages/connectivity/connectivity/integration_test/connectivity_test.dart @@ -2,10 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// TODO(cyanglaz): Remove once https://github.com/flutter/plugins/pull/3158 is landed. +// @dart = 2.9 + import 'package:integration_test/integration_test.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:connectivity/connectivity.dart'; + void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); From 3a0ad7d0845a1cecf4b78875250d1daab9b0cd43 Mon Sep 17 00:00:00 2001 From: cyanglaz Date: Fri, 23 Oct 2020 14:01:38 -0700 Subject: [PATCH 12/13] fix --- .../connectivity/integration_test/connectivity_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/connectivity/connectivity/integration_test/connectivity_test.dart b/packages/connectivity/connectivity/integration_test/connectivity_test.dart index 8e2644aa603d..efb4602d5a35 100644 --- a/packages/connectivity/connectivity/integration_test/connectivity_test.dart +++ b/packages/connectivity/connectivity/integration_test/connectivity_test.dart @@ -14,7 +14,7 @@ void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); group('Connectivity test driver', () { - late Connectivity _connectivity; + Connectivity _connectivity; setUpAll(() async { _connectivity = Connectivity(); From b0254eede708c690b9e38b88b096fb2bb760b838 Mon Sep 17 00:00:00 2001 From: cyanglaz Date: Fri, 23 Oct 2020 15:05:24 -0700 Subject: [PATCH 13/13] git ref --- packages/connectivity/connectivity/pubspec.yaml | 10 ++++++++-- .../connectivity_platform_interface/pubspec.yaml | 5 ++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/connectivity/connectivity/pubspec.yaml b/packages/connectivity/connectivity/pubspec.yaml index 114692c2ecdb..faef554fbeef 100644 --- a/packages/connectivity/connectivity/pubspec.yaml +++ b/packages/connectivity/connectivity/pubspec.yaml @@ -25,7 +25,10 @@ dependencies: sdk: flutter meta: ^1.0.5 connectivity_platform_interface: - path: ../connectivity_platform_interface + git: + url: https://github.com/flutter/plugins.git + ref: nnbd + path: packages/connectivity/connectivity_platform_interface #TODO(cyanglaz): re-endorse the below plugins when they have migrated to nnbd. # https://github.com/flutter/flutter/issues/68669 connectivity_macos: ^0.1.0 @@ -41,7 +44,10 @@ dev_dependencies: path: ../../integration_test mockito: ^4.1.1 plugin_platform_interface: - path: ../../plugin_platform_interface + git: + url: https://github.com/flutter/plugins.git + ref: nnbd + path: packages/plugin_platform_interface pedantic: ^1.10.0-nullsafety.1 environment: diff --git a/packages/connectivity/connectivity_platform_interface/pubspec.yaml b/packages/connectivity/connectivity_platform_interface/pubspec.yaml index 124825f7b386..add363a7b12a 100644 --- a/packages/connectivity/connectivity_platform_interface/pubspec.yaml +++ b/packages/connectivity/connectivity_platform_interface/pubspec.yaml @@ -13,7 +13,10 @@ dependencies: sdk: flutter meta: ^1.3.0-nullsafety.3 plugin_platform_interface: - path: ../../plugin_platform_interface + git: + url: https://github.com/flutter/plugins.git + ref: nnbd + path: packages/plugin_platform_interface dev_dependencies: flutter_test: