diff --git a/packages/connectivity/CHANGELOG.md b/packages/connectivity/CHANGELOG.md
index b600354..57741ee 100644
--- a/packages/connectivity/CHANGELOG.md
+++ b/packages/connectivity/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.4.6+2
+
+* Migrate deprecated BinaryMessages to ServicesBinding.instance.defaultBinaryMessenger.
+* Bump Flutter SDK to 1.12.13+hotfix.5 or greater (current stable).
+
 ## 0.4.6+1
 
 * Remove the deprecated `author:` field from pubspec.yaml
diff --git a/packages/connectivity/pubspec.yaml b/packages/connectivity/pubspec.yaml
index b12d3c2..91ba068 100644
--- a/packages/connectivity/pubspec.yaml
+++ b/packages/connectivity/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Flutter plugin for discovering the state of the network (WiFi &
   mobile/cellular) connectivity on Android and iOS.
 homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity
-version: 0.4.6+1
+version: 0.4.6+2
 
 flutter:
   plugin:
@@ -28,4 +28,4 @@
 
 environment:
   sdk: ">=2.0.0-dev.28.0 <3.0.0"
-  flutter: ">=1.10.0 <2.0.0"
+  flutter: ">=1.12.13+hotfix.5 <2.0.0"
diff --git a/packages/connectivity/test/connectivity_test.dart b/packages/connectivity/test/connectivity_test.dart
index 892e7d0..39bd42f 100644
--- a/packages/connectivity/test/connectivity_test.dart
+++ b/packages/connectivity/test/connectivity_test.dart
@@ -38,10 +38,8 @@
           .setMockMethodCallHandler((MethodCall methodCall) async {
         switch (methodCall.method) {
           case 'listen':
-            // TODO(hterkelsen): Remove this when defaultBinaryMessages is in stable.
-            // https://github.com/flutter/flutter/issues/33446
-            // ignore: deprecated_member_use
-            await BinaryMessages.handlePlatformMessage(
+            await ServicesBinding.instance.defaultBinaryMessenger
+                .handlePlatformMessage(
               Connectivity.eventChannel.name,
               Connectivity.eventChannel.codec.encodeSuccessEnvelope('wifi'),
               (_) {},
diff --git a/packages/sensors/CHANGELOG.md b/packages/sensors/CHANGELOG.md
index 4d09a92..e4984c0 100644
--- a/packages/sensors/CHANGELOG.md
+++ b/packages/sensors/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.4.1+6
+
+* Migrate from deprecated BinaryMessages to ServicesBinding.instance.defaultBinaryMessenger.
+* Require Flutter SDK 1.12.13+hotfix.5 or greater (current stable).
+
 ## 0.4.1+5
 
 * Fix example `setState()` called after `dispose()` by canceling the timer.
diff --git a/packages/sensors/pubspec.yaml b/packages/sensors/pubspec.yaml
index 0684e92..1a3f423 100644
--- a/packages/sensors/pubspec.yaml
+++ b/packages/sensors/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Flutter plugin for accessing the Android and iOS accelerometer and
   gyroscope sensors.
 homepage: https://github.com/flutter/plugins/tree/master/packages/sensors
-version: 0.4.1+5
+version: 0.4.1+6
 
 flutter:
   plugin:
@@ -26,4 +26,4 @@
 
 environment:
   sdk: ">=2.0.0-dev.28.0 <3.0.0"
-  flutter: ">=1.10.0 <2.0.0"
+  flutter: ">=1.12.13+hotfix.5 <2.0.0"
diff --git a/packages/sensors/test/sensors_test.dart b/packages/sensors/test/sensors_test.dart
index 1485d58..832a2f8 100644
--- a/packages/sensors/test/sensors_test.dart
+++ b/packages/sensors/test/sensors_test.dart
@@ -53,20 +53,15 @@
   const StandardMethodCodec standardMethod = StandardMethodCodec();
 
   void _emitEvent(ByteData event) {
-    // TODO(hterkelsen): Remove this when defaultBinaryMessages is in stable.
-    // https://github.com/flutter/flutter/issues/33446
-    // ignore: deprecated_member_use
-    BinaryMessages.handlePlatformMessage(
+    ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage(
       channelName,
       event,
       (ByteData reply) {},
     );
   }
 
-  // TODO(hterkelsen): Remove this when defaultBinaryMessages is in stable.
-  // https://github.com/flutter/flutter/issues/33446
-  // ignore: deprecated_member_use
-  BinaryMessages.setMockMessageHandler(channelName, (ByteData message) async {
+  ServicesBinding.instance.defaultBinaryMessenger
+      .setMockMessageHandler(channelName, (ByteData message) async {
     final MethodCall methodCall = standardMethod.decodeMethodCall(message);
     if (methodCall.method == 'listen') {
       _emitEvent(standardMethod.encodeSuccessEnvelope(sensorData));
diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md
index 3bfcd67..52b6416 100644
--- a/packages/webview_flutter/CHANGELOG.md
+++ b/packages/webview_flutter/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.19+2
+
+* Migrate from deprecated BinaryMessages to ServicesBinding.instance.defaultBinaryMessenger.
+
 ## 0.3.19+1
 
 * Raise min Flutter SDK requirement to the latest stable. v2 embedding apps no
diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml
index 425239e..5e2a852 100644
--- a/packages/webview_flutter/pubspec.yaml
+++ b/packages/webview_flutter/pubspec.yaml
@@ -1,6 +1,6 @@
 name: webview_flutter
 description: A Flutter plugin that provides a WebView widget on Android and iOS.
-version: 0.3.19+1
+version: 0.3.19+2
 homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter
 
 environment:
diff --git a/packages/webview_flutter/test/webview_flutter_test.dart b/packages/webview_flutter/test/webview_flutter_test.dart
index 10c7bbb..c7cf46a 100644
--- a/packages/webview_flutter/test/webview_flutter_test.dart
+++ b/packages/webview_flutter/test/webview_flutter_test.dart
@@ -994,11 +994,8 @@
     };
     final ByteData data = codec
         .encodeMethodCall(MethodCall('javascriptChannelMessage', arguments));
-    // TODO(hterkelsen): Remove this when defaultBinaryMessages is in stable.
-    // https://github.com/flutter/flutter/issues/33446
-    // ignore: deprecated_member_use
-    BinaryMessages.handlePlatformMessage(
-        channel.name, data, (ByteData data) {});
+    ServicesBinding.instance.defaultBinaryMessenger
+        .handlePlatformMessage(channel.name, data, (ByteData data) {});
   }
 
   // Fakes a main frame navigation that was initiated by the webview, e.g when
@@ -1016,10 +1013,8 @@
     };
     final ByteData data =
         codec.encodeMethodCall(MethodCall('navigationRequest', arguments));
-    // TODO(hterkelsen): Remove this when defaultBinaryMessages is in stable.
-    // https://github.com/flutter/flutter/issues/33446
-    // ignore: deprecated_member_use
-    BinaryMessages.handlePlatformMessage(channel.name, data, (ByteData data) {
+    ServicesBinding.instance.defaultBinaryMessenger
+        .handlePlatformMessage(channel.name, data, (ByteData data) {
       final bool allow = codec.decodeEnvelope(data);
       if (allow) {
         _loadUrl(url);
@@ -1035,10 +1030,7 @@
       <dynamic, dynamic>{'url': currentUrl},
     ));
 
-    // TODO(hterkelsen): Remove this when defaultBinaryMessages is in stable.
-    // https://github.com/flutter/flutter/issues/33446
-    // ignore: deprecated_member_use
-    BinaryMessages.handlePlatformMessage(
+    ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage(
       channel.name,
       data,
       (ByteData data) {},
@@ -1053,10 +1045,7 @@
       <dynamic, dynamic>{'url': currentUrl},
     ));
 
-    // TODO(hterkelsen): Remove this when defaultBinaryMessages is in stable.
-    // https://github.com/flutter/flutter/issues/33446
-    // ignore: deprecated_member_use
-    BinaryMessages.handlePlatformMessage(
+    ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage(
       channel.name,
       data,
       (ByteData data) {},
