Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit b597e4b

Browse files
author
Chris Yang
authored
[connectivity][connectvity_platform_interface] migrate to nnbd (#3176)
1 parent a26f14f commit b597e4b

16 files changed

+90
-51
lines changed

packages/connectivity/connectivity/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 3.0.0-nullsafety
2+
3+
* Migrate to null safety.
4+
15
## 2.0.0
26

37
* [Breaking Change] The `getWifiName`, `getWifiBSSID` and `getWifiIP` are removed to [wifi_info_flutter](https://github.com/flutter/plugins/tree/master/packages/wifi_info_flutter)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
include: ../../../analysis_options.yaml
2+
analyzer:
3+
enable-experiment:
4+
- non-nullable

packages/connectivity/connectivity/example/lib/main.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class MyApp extends StatelessWidget {
4040
}
4141

4242
class MyHomePage extends StatefulWidget {
43-
MyHomePage({Key key, this.title}) : super(key: key);
43+
MyHomePage({Key? key, required this.title}) : super(key: key);
4444

4545
final String title;
4646

@@ -51,7 +51,7 @@ class MyHomePage extends StatefulWidget {
5151
class _MyHomePageState extends State<MyHomePage> {
5252
String _connectionStatus = 'Unknown';
5353
final Connectivity _connectivity = Connectivity();
54-
StreamSubscription<ConnectivityResult> _connectivitySubscription;
54+
late StreamSubscription<ConnectivityResult> _connectivitySubscription;
5555

5656
@override
5757
void initState() {
@@ -69,7 +69,7 @@ class _MyHomePageState extends State<MyHomePage> {
6969

7070
// Platform messages are asynchronous, so we initialize in an async method.
7171
Future<void> initConnectivity() async {
72-
ConnectivityResult result;
72+
ConnectivityResult result = ConnectivityResult.none;
7373
// Platform messages may fail, so we use a try/catch PlatformException.
7474
try {
7575
result = await _connectivity.checkConnectivity();

packages/connectivity/connectivity/example/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ dependencies:
1010
dev_dependencies:
1111
flutter_driver:
1212
sdk: flutter
13-
test: any
13+
test: ^1.10.0-nullsafety.1
1414
integration_test:
1515
path: ../../../integration_test
16-
pedantic: ^1.8.0
16+
pedantic: ^1.10.0-nullsafety.1
1717

1818
flutter:
1919
uses-material-design: true

packages/connectivity/connectivity/example/test_driver/integration_test/connectivity_test.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
// TODO(cyanglaz): Remove once https://github.com/flutter/plugins/pull/3158 is landed.
6+
// @dart = 2.9
7+
58
import 'package:integration_test/integration_test.dart';
69
import 'package:flutter_test/flutter_test.dart';
710
import 'package:connectivity/connectivity.dart';

packages/connectivity/connectivity/integration_test/connectivity_test.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
// TODO(cyanglaz): Remove once https://github.com/flutter/plugins/pull/3158 is landed.
6+
// @dart = 2.9
7+
58
import 'package:integration_test/integration_test.dart';
69
import 'package:flutter_test/flutter_test.dart';
710
import 'package:connectivity/connectivity.dart';
811

12+
913
void main() {
1014
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
1115

packages/connectivity/connectivity/lib/connectivity.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ class Connectivity {
2222
if (_singleton == null) {
2323
_singleton = Connectivity._();
2424
}
25-
return _singleton;
25+
return _singleton!;
2626
}
2727

2828
Connectivity._();
2929

30-
static Connectivity _singleton;
30+
static Connectivity? _singleton;
3131

3232
static ConnectivityPlatform get _platform => ConnectivityPlatform.instance;
3333

packages/connectivity/connectivity/pubspec.yaml

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ name: connectivity
22
description: Flutter plugin for discovering the state of the network (WiFi &
33
mobile/cellular) connectivity on Android and iOS.
44
homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity
5-
version: 2.0.0
5+
version: 3.0.0-nullsafety
6+
7+
# Don't publish this package until null safety is stable or the package is in the allow list.
8+
publish_to: none
69

710
flutter:
811
plugin:
@@ -21,22 +24,26 @@ dependencies:
2124
flutter:
2225
sdk: flutter
2326
meta: ^1.0.5
24-
connectivity_platform_interface: ^1.0.2
27+
connectivity_platform_interface:
28+
path: ../connectivity_platform_interface
29+
#TODO(cyanglaz): re-endorse the below plugins when they have migrated to nnbd.
30+
# https://github.com/flutter/flutter/issues/68669
2531
connectivity_macos: ^0.1.0
26-
connectivity_for_web: ^0.3.0
32+
# connectivity_for_web: ^0.3.0
2733

2834
dev_dependencies:
2935
flutter_test:
3036
sdk: flutter
3137
flutter_driver:
3238
sdk: flutter
33-
test: any
39+
test: ^1.10.0-nullsafety.1
3440
integration_test:
3541
path: ../../integration_test
3642
mockito: ^4.1.1
37-
plugin_platform_interface: ^1.0.0
38-
pedantic: ^1.8.0
43+
plugin_platform_interface:
44+
path: ../../plugin_platform_interface
45+
pedantic: ^1.10.0-nullsafety.1
3946

4047
environment:
41-
sdk: ">=2.1.0 <3.0.0"
48+
sdk: '>=2.10.0-56.0.dev <3.0.0'
4249
flutter: ">=1.12.13+hotfix.5 <2.0.0"

packages/connectivity/connectivity/test/connectivity_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
// TODO(cyanglaz): Remove once Mockito is migrated to null safety.
56
// @dart = 2.9
6-
77
import 'package:connectivity/connectivity.dart';
88
import 'package:connectivity_platform_interface/connectivity_platform_interface.dart';
99
import 'package:flutter_test/flutter_test.dart';

packages/connectivity/connectivity_platform_interface/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.0.0-nullsafety
2+
3+
* Migrate to null safety.
4+
15
## 1.0.6
26

37
* Update lower bound of dart dependency to 2.1.0.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
include: ../../../analysis_options.yaml
2+
analyzer:
3+
enable-experiment:
4+
- non-nullable

packages/connectivity/connectivity_platform_interface/lib/connectivity_platform_interface.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,17 @@ abstract class ConnectivityPlatform extends PlatformInterface {
5050
}
5151

5252
/// Obtains the wifi name (SSID) of the connected network
53-
Future<String> getWifiName() {
53+
Future<String?> getWifiName() {
5454
throw UnimplementedError('getWifiName() has not been implemented.');
5555
}
5656

5757
/// Obtains the wifi BSSID of the connected network.
58-
Future<String> getWifiBSSID() {
58+
Future<String?> getWifiBSSID() {
5959
throw UnimplementedError('getWifiBSSID() has not been implemented.');
6060
}
6161

6262
/// Obtains the IP address of the connected wifi network
63-
Future<String> getWifiIP() {
63+
Future<String?> getWifiIP() {
6464
throw UnimplementedError('getWifiIP() has not been implemented.');
6565
}
6666

packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:connectivity_platform_interface/connectivity_platform_interface.
88
import 'package:flutter/services.dart';
99
import 'package:meta/meta.dart';
1010

11+
import 'utils.dart';
1112
import 'utils.dart';
1213

1314
/// An implementation of [ConnectivityPlatform] that uses method channels.
@@ -22,29 +23,29 @@ class MethodChannelConnectivity extends ConnectivityPlatform {
2223
EventChannel eventChannel =
2324
EventChannel('plugins.flutter.io/connectivity_status');
2425

25-
Stream<ConnectivityResult> _onConnectivityChanged;
26+
Stream<ConnectivityResult>? _onConnectivityChanged;
2627

2728
/// Fires whenever the connectivity state changes.
2829
Stream<ConnectivityResult> get onConnectivityChanged {
2930
if (_onConnectivityChanged == null) {
30-
_onConnectivityChanged = eventChannel
31-
.receiveBroadcastStream()
32-
.map((dynamic result) => result.toString())
33-
.map(parseConnectivityResult);
31+
_onConnectivityChanged =
32+
eventChannel.receiveBroadcastStream().map((dynamic result) {
33+
return result != null ? result.toString() : '';
34+
}).map(parseConnectivityResult);
3435
}
35-
return _onConnectivityChanged;
36+
return _onConnectivityChanged!;
3637
}
3738

3839
@override
39-
Future<ConnectivityResult> checkConnectivity() {
40-
return methodChannel
41-
.invokeMethod<String>('check')
42-
.then(parseConnectivityResult);
40+
Future<ConnectivityResult> checkConnectivity() async {
41+
final String checkResult =
42+
await methodChannel.invokeMethod<String>('check') ?? '';
43+
return parseConnectivityResult(checkResult);
4344
}
4445

4546
@override
46-
Future<String> getWifiName() async {
47-
String wifiName = await methodChannel.invokeMethod<String>('wifiName');
47+
Future<String?> getWifiName() async {
48+
String? wifiName = await methodChannel.invokeMethod<String>('wifiName');
4849
// as Android might return <unknown ssid>, uniforming result
4950
// our iOS implementation will return null
5051
if (wifiName == '<unknown ssid>') {
@@ -54,29 +55,31 @@ class MethodChannelConnectivity extends ConnectivityPlatform {
5455
}
5556

5657
@override
57-
Future<String> getWifiBSSID() {
58+
Future<String?> getWifiBSSID() {
5859
return methodChannel.invokeMethod<String>('wifiBSSID');
5960
}
6061

6162
@override
62-
Future<String> getWifiIP() {
63+
Future<String?> getWifiIP() {
6364
return methodChannel.invokeMethod<String>('wifiIPAddress');
6465
}
6566

6667
@override
6768
Future<LocationAuthorizationStatus> requestLocationServiceAuthorization({
6869
bool requestAlwaysLocationUsage = false,
69-
}) {
70-
return methodChannel.invokeMethod<String>(
71-
'requestLocationServiceAuthorization', <bool>[
72-
requestAlwaysLocationUsage
73-
]).then(parseLocationAuthorizationStatus);
70+
}) async {
71+
final String requestLocationServiceResult = await methodChannel
72+
.invokeMethod<String>('requestLocationServiceAuthorization',
73+
<bool>[requestAlwaysLocationUsage]) ??
74+
'';
75+
return parseLocationAuthorizationStatus(requestLocationServiceResult);
7476
}
7577

7678
@override
77-
Future<LocationAuthorizationStatus> getLocationServiceAuthorization() {
78-
return methodChannel
79-
.invokeMethod<String>('getLocationServiceAuthorization')
80-
.then(parseLocationAuthorizationStatus);
79+
Future<LocationAuthorizationStatus> getLocationServiceAuthorization() async {
80+
final String getLocationServiceResult = await methodChannel
81+
.invokeMethod<String>('getLocationServiceAuthorization') ??
82+
'';
83+
return parseLocationAuthorizationStatus(getLocationServiceResult);
8184
}
8285
}

packages/connectivity/connectivity_platform_interface/pubspec.yaml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,23 @@ description: A common platform interface for the connectivity plugin.
33
homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity_platform_interface
44
# NOTE: We strongly prefer non-breaking changes, even at the expense of a
55
# less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
6-
version: 1.0.6
6+
version: 2.0.0-nullsafety
7+
8+
# Don't publish this package until null safety is stable or the package is in the allow list.
9+
publish_to: none
710

811
dependencies:
912
flutter:
1013
sdk: flutter
11-
meta: ^1.0.5
12-
plugin_platform_interface: ^1.0.1
14+
meta: ^1.3.0-nullsafety.3
15+
plugin_platform_interface:
16+
path: ../../plugin_platform_interface
1317

1418
dev_dependencies:
1519
flutter_test:
1620
sdk: flutter
17-
pedantic: ^1.8.0
21+
pedantic: ^1.10.0-nullsafety.1
1822

1923
environment:
20-
sdk: ">=2.1.0 <3.0.0"
24+
sdk: '>=2.10.0-56.0.dev <3.0.0'
2125
flutter: ">=1.12.13+hotfix.5 <2.0.0"

packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ void main() {
1212

1313
group('$MethodChannelConnectivity', () {
1414
final List<MethodCall> log = <MethodCall>[];
15-
MethodChannelConnectivity methodChannelConnectivity;
15+
late MethodChannelConnectivity methodChannelConnectivity;
1616

1717
setUp(() async {
1818
methodChannelConnectivity = MethodChannelConnectivity();
@@ -42,7 +42,7 @@ void main() {
4242
.setMockMethodCallHandler((MethodCall methodCall) async {
4343
switch (methodCall.method) {
4444
case 'listen':
45-
await ServicesBinding.instance.defaultBinaryMessenger
45+
await ServicesBinding.instance!.defaultBinaryMessenger
4646
.handlePlatformMessage(
4747
methodChannelConnectivity.eventChannel.name,
4848
methodChannelConnectivity.eventChannel.codec
@@ -64,7 +64,7 @@ void main() {
6464
});
6565

6666
test('getWifiName', () async {
67-
final String result = await methodChannelConnectivity.getWifiName();
67+
final String? result = await methodChannelConnectivity.getWifiName();
6868
expect(result, '1337wifi');
6969
expect(
7070
log,
@@ -78,7 +78,7 @@ void main() {
7878
});
7979

8080
test('getWifiBSSID', () async {
81-
final String result = await methodChannelConnectivity.getWifiBSSID();
81+
final String? result = await methodChannelConnectivity.getWifiBSSID();
8282
expect(result, 'c0:ff:33:c0:d3:55');
8383
expect(
8484
log,
@@ -92,7 +92,7 @@ void main() {
9292
});
9393

9494
test('getWifiIP', () async {
95-
final String result = await methodChannelConnectivity.getWifiIP();
95+
final String? result = await methodChannelConnectivity.getWifiIP();
9696
expect(result, '127.0.0.1');
9797
expect(
9898
log,

script/incremental_build.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ CUSTOM_ANALYSIS_PLUGINS=(
3131
"url_launcher/url_launcher"
3232
"device_info/device_info_platform_interface"
3333
"device_info/device_info"
34+
"connectivity/connectivity_platform_interface"
35+
"connectivity/connectivity"
3436
"url_launcher/url_launcher_web"
3537
)
3638
# Comma-separated string of the list above

0 commit comments

Comments
 (0)