[battery] Migrate battery_plugin_interface to null safety (#3366)

diff --git a/packages/battery/battery_platform_interface/CHANGELOG.md b/packages/battery/battery_platform_interface/CHANGELOG.md
index 09ac38c..6fc7228 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 4a3365c..739812d 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 @@
 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<int> batteryLevel() async {
@@ -23,7 +23,7 @@
   }
 
   /// Stream variable for storing battery state.
-  Stream<BatteryState> _onBatteryStateChanged;
+  Stream<BatteryState>? _onBatteryStateChanged;
 
   /// Event channel for getting battery change state.
   Stream<BatteryState> onBatteryStateChanged() {
@@ -32,7 +32,8 @@
           .receiveBroadcastStream()
           .map((dynamic event) => _parseBatteryState(event));
     }
-    return _onBatteryStateChanged;
+
+    return _onBatteryStateChanged!;
   }
 }
 
diff --git a/packages/battery/battery_platform_interface/pubspec.yaml b/packages/battery/battery_platform_interface/pubspec.yaml
index e88ef37..c7c4f5e 100644
--- a/packages/battery/battery_platform_interface/pubspec.yaml
+++ b/packages/battery/battery_platform_interface/pubspec.yaml
@@ -3,20 +3,20 @@
 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
+  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
 
 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 65323e4..2b17cf9 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 @@
 void main() {
   TestWidgetsFlutterBinding.ensureInitialized();
 
-  group("$MethodChannelBattery", () {
-    MethodChannelBattery methodChannelBattery;
+  group('$MethodChannelBattery', () {
+    late MethodChannelBattery methodChannelBattery;
 
     setUp(() async {
       methodChannelBattery = MethodChannelBattery();
@@ -32,7 +32,7 @@
           .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 @@
     });
 
     /// 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);
diff --git a/script/nnbd_plugins.sh b/script/nnbd_plugins.sh
index 0cab28a..7bc5ac3 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"