From ba04fba6bfe31afc1a9275824f36b1f3b86c8a5d Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Tue, 22 Dec 2020 23:28:21 -0500 Subject: [PATCH 1/4] update to null-safety --- .../battery_platform_interface/CHANGELOG.md | 4 ++++ .../method_channel/method_channel_battery.dart | 15 +++++++-------- .../battery_platform_interface/pubspec.yaml | 12 ++++++------ .../test/method_channel_battery_test.dart | 10 +++++----- 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/packages/battery/battery_platform_interface/CHANGELOG.md b/packages/battery/battery_platform_interface/CHANGELOG.md index 09ac38cc5b4b..6fc7228a89f9 100644 --- a/packages/battery/battery_platform_interface/CHANGELOG.md +++ b/packages/battery/battery_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety + +* Migrate to null safety. + ## 1.0.1 - Update Flutter SDK constraint. diff --git a/packages/battery/battery_platform_interface/lib/method_channel/method_channel_battery.dart b/packages/battery/battery_platform_interface/lib/method_channel/method_channel_battery.dart index 4a3365cc2475..7b6128c88ff7 100644 --- a/packages/battery/battery_platform_interface/lib/method_channel/method_channel_battery.dart +++ b/packages/battery/battery_platform_interface/lib/method_channel/method_channel_battery.dart @@ -11,11 +11,11 @@ import '../battery_platform_interface.dart'; class MethodChannelBattery extends BatteryPlatform { /// The method channel used to interact with the native platform. @visibleForTesting - MethodChannel channel = MethodChannel('plugins.flutter.io/battery'); + final MethodChannel channel = MethodChannel('plugins.flutter.io/battery'); /// The event channel used to interact with the native platform. @visibleForTesting - EventChannel eventChannel = EventChannel('plugins.flutter.io/charging'); + final EventChannel eventChannel = EventChannel('plugins.flutter.io/charging'); /// Method channel for getting battery level. Future batteryLevel() async { @@ -23,15 +23,14 @@ class MethodChannelBattery extends BatteryPlatform { } /// Stream variable for storing battery state. - Stream _onBatteryStateChanged; + late final Stream _onBatteryStateChanged; /// Event channel for getting battery change state. Stream onBatteryStateChanged() { - if (_onBatteryStateChanged == null) { - _onBatteryStateChanged = eventChannel - .receiveBroadcastStream() - .map((dynamic event) => _parseBatteryState(event)); - } + _onBatteryStateChanged = eventChannel + .receiveBroadcastStream() + .map((dynamic event) => _parseBatteryState(event)); + return _onBatteryStateChanged; } } diff --git a/packages/battery/battery_platform_interface/pubspec.yaml b/packages/battery/battery_platform_interface/pubspec.yaml index e88ef378be6e..733effb455c7 100644 --- a/packages/battery/battery_platform_interface/pubspec.yaml +++ b/packages/battery/battery_platform_interface/pubspec.yaml @@ -3,20 +3,20 @@ description: A common platform interface for the battery plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/battery # 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.1 +version: 2.0.0-nullsafety dependencies: flutter: sdk: flutter - meta: ^1.1.8 - plugin_platform_interface: ^1.0.2 + meta: ^1.3.0-nullsafety.6 + plugin_platform_interface: ^1.1.0-nullsafety.1 dev_dependencies: flutter_test: sdk: flutter - mockito: ^4.1.1 - pedantic: ^1.8.0 + mockito: ^5.0.0-nullsafety.0 + pedantic: ^1.10.0-nullsafety.3 environment: - sdk: ">=2.7.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.9.1+hotfix.4" diff --git a/packages/battery/battery_platform_interface/test/method_channel_battery_test.dart b/packages/battery/battery_platform_interface/test/method_channel_battery_test.dart index 65323e4044de..2b17cf97e711 100644 --- a/packages/battery/battery_platform_interface/test/method_channel_battery_test.dart +++ b/packages/battery/battery_platform_interface/test/method_channel_battery_test.dart @@ -12,8 +12,8 @@ import 'package:battery_platform_interface/method_channel/method_channel_battery void main() { TestWidgetsFlutterBinding.ensureInitialized(); - group("$MethodChannelBattery", () { - MethodChannelBattery methodChannelBattery; + group('$MethodChannelBattery', () { + late MethodChannelBattery methodChannelBattery; setUp(() async { methodChannelBattery = MethodChannelBattery(); @@ -32,7 +32,7 @@ void main() { .setMockMethodCallHandler((MethodCall methodCall) async { switch (methodCall.method) { case 'listen': - await ServicesBinding.instance.defaultBinaryMessenger + await ServicesBinding.instance!.defaultBinaryMessenger .handlePlatformMessage( methodChannelBattery.eventChannel.name, methodChannelBattery.eventChannel.codec @@ -48,13 +48,13 @@ void main() { }); /// Test for batetry level call. - test("getBatteryLevel", () async { + test('getBatteryLevel', () async { final int result = await methodChannelBattery.batteryLevel(); expect(result, 90); }); /// Test for battery changed state call. - test("onBatteryChanged", () async { + test('onBatteryChanged', () async { final BatteryState result = await methodChannelBattery.onBatteryStateChanged().first; expect(result, BatteryState.full); From 1d9b5353536323324d46c1e7a8232738bf2e0ad5 Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Wed, 23 Dec 2020 23:29:57 -0500 Subject: [PATCH 2/4] use a nullable stream --- .../lib/method_channel/method_channel_battery.dart | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/battery/battery_platform_interface/lib/method_channel/method_channel_battery.dart b/packages/battery/battery_platform_interface/lib/method_channel/method_channel_battery.dart index 7b6128c88ff7..739812dc95e5 100644 --- a/packages/battery/battery_platform_interface/lib/method_channel/method_channel_battery.dart +++ b/packages/battery/battery_platform_interface/lib/method_channel/method_channel_battery.dart @@ -23,15 +23,17 @@ class MethodChannelBattery extends BatteryPlatform { } /// Stream variable for storing battery state. - late final Stream _onBatteryStateChanged; + Stream? _onBatteryStateChanged; /// Event channel for getting battery change state. Stream onBatteryStateChanged() { - _onBatteryStateChanged = eventChannel - .receiveBroadcastStream() - .map((dynamic event) => _parseBatteryState(event)); + if (_onBatteryStateChanged == null) { + _onBatteryStateChanged = eventChannel + .receiveBroadcastStream() + .map((dynamic event) => _parseBatteryState(event)); + } - return _onBatteryStateChanged; + return _onBatteryStateChanged!; } } From 334d36989cd656a2b8bf1b62ca08f3e72089d806 Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Tue, 29 Dec 2020 23:46:08 -0500 Subject: [PATCH 3/4] exclude battery from stable tests --- script/nnbd_plugins.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/script/nnbd_plugins.sh b/script/nnbd_plugins.sh index 0cab28abe2ab..7bc5ac35a3a5 100644 --- a/script/nnbd_plugins.sh +++ b/script/nnbd_plugins.sh @@ -6,6 +6,7 @@ readonly NNBD_PLUGINS_LIST=( "android_intent" + "battery" "connectivity" "device_info" "flutter_plugin_android_lifecycle" From 16938c1799234ca65ef440bfa4d652a1b487eb74 Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Thu, 7 Jan 2021 14:10:30 -0500 Subject: [PATCH 4/4] change to minimum null safety dependency --- packages/battery/battery_platform_interface/pubspec.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/battery/battery_platform_interface/pubspec.yaml b/packages/battery/battery_platform_interface/pubspec.yaml index 733effb455c7..c7c4f5e8395e 100644 --- a/packages/battery/battery_platform_interface/pubspec.yaml +++ b/packages/battery/battery_platform_interface/pubspec.yaml @@ -8,14 +8,14 @@ version: 2.0.0-nullsafety dependencies: flutter: sdk: flutter - meta: ^1.3.0-nullsafety.6 + meta: ^1.3.0-nullsafety plugin_platform_interface: ^1.1.0-nullsafety.1 dev_dependencies: flutter_test: sdk: flutter mockito: ^5.0.0-nullsafety.0 - pedantic: ^1.10.0-nullsafety.3 + pedantic: ^1.10.0-nullsafety environment: sdk: ">=2.12.0-0 <3.0.0"