diff --git a/packages/animations/CHANGELOG.md b/packages/animations/CHANGELOG.md
index 21ccdb7..6fa3537 100644
--- a/packages/animations/CHANGELOG.md
+++ b/packages/animations/CHANGELOG.md
@@ -1,3 +1,6 @@
+## 2.0.3
+* Updates for non-nullable bindings.
+
 ## 2.0.2
 * Fixed documentation for `OpenContainer` class; replaced `openBuilder` with `closedBuilder`. 
 
diff --git a/packages/animations/lib/src/open_container.dart b/packages/animations/lib/src/open_container.dart
index 67ec13e..a3a3c72 100644
--- a/packages/animations/lib/src/open_container.dart
+++ b/packages/animations/lib/src/open_container.dart
@@ -628,7 +628,7 @@
     if (hideableKey.currentState?.isVisible == false) {
       // This route may be disposed without dismissing its animation if it is
       // removed by the navigator.
-      _ambiguate(SchedulerBinding.instance)!
+      SchedulerBinding.instance
           .addPostFrameCallback((Duration d) => _toggleHideable(hide: false));
     }
     super.dispose();
@@ -662,7 +662,7 @@
     }
 
     if (delayForSourceRoute) {
-      _ambiguate(SchedulerBinding.instance)!
+      SchedulerBinding.instance
           .addPostFrameCallback(takeMeasurementsInSourceRoute);
     } else {
       takeMeasurementsInSourceRoute();
@@ -901,11 +901,3 @@
     return _flipped;
   }
 }
-
-/// This allows a value of type T or T? to be treated as a value of type T?.
-///
-/// We use this so that APIs that have become non-nullable can still be used
-/// with `!` and `?` on the stable branch.
-// TODO(ianh): Remove this once the relevant APIs have shipped to stable.
-// See https://github.com/flutter/flutter/issues/64830
-T? _ambiguate<T>(T? value) => value;
diff --git a/packages/animations/pubspec.yaml b/packages/animations/pubspec.yaml
index ab7ef6d..56a4bea 100644
--- a/packages/animations/pubspec.yaml
+++ b/packages/animations/pubspec.yaml
@@ -2,10 +2,11 @@
 description: Fancy pre-built animations that can easily be integrated into any Flutter application.
 repository: https://github.com/flutter/packages/tree/main/packages/animations
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+animations%22
-version: 2.0.2
+version: 2.0.3
 
 environment:
   sdk: '>=2.12.0 <3.0.0'
+  flutter: ">=3.0.0"
 
 dependencies:
   flutter:
diff --git a/packages/flutter_image/CHANGELOG.md b/packages/flutter_image/CHANGELOG.md
index a485636..466139a 100644
--- a/packages/flutter_image/CHANGELOG.md
+++ b/packages/flutter_image/CHANGELOG.md
@@ -1,6 +1,7 @@
-## NEXT
+## 4.1.1
 
-- Updates package description.
+* Updates package description.
+* Updates for non-nullable bindings.
 
 ## 4.1.0
 
diff --git a/packages/flutter_image/pubspec.yaml b/packages/flutter_image/pubspec.yaml
index 59d2094..05cc9a3 100644
--- a/packages/flutter_image/pubspec.yaml
+++ b/packages/flutter_image/pubspec.yaml
@@ -3,11 +3,11 @@
   Image utilities for Flutter: improved network providers, effects, etc.
 repository: https://github.com/flutter/packages/tree/main/packages/flutter_image
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_image%22
-version: 4.1.0
+version: 4.1.1
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
-  flutter: ">=1.10.15-pre.144"
+  flutter: ">=3.0.0"
 
 dependencies:
   flutter:
diff --git a/packages/flutter_image/test/network_test.dart b/packages/flutter_image/test/network_test.dart
index 10a5727..187688f 100644
--- a/packages/flutter_image/test/network_test.dart
+++ b/packages/flutter_image/test/network_test.dart
@@ -142,7 +142,7 @@
 ) {
   final ImageStreamCompleter completer = subject.load(
     subject,
-    _ambiguate(PaintingBinding.instance)!.instantiateImageCodec,
+    PaintingBinding.instance.instantiateImageCodec,
   );
   completer.addListener(ImageStreamListener(
     (ImageInfo image, bool synchronousCall) {},
@@ -159,7 +159,7 @@
 ) {
   final ImageStreamCompleter completer = subject.load(
     subject,
-    _ambiguate(PaintingBinding.instance)!.instantiateImageCodec,
+    PaintingBinding.instance.instantiateImageCodec,
   );
   completer.addListener(ImageStreamListener(
     expectAsync2((ImageInfo image, bool synchronousCall) {
@@ -168,11 +168,3 @@
     }),
   ));
 }
-
-/// This allows a value of type T or T? to be treated as a value of type T?.
-///
-/// We use this so that APIs that have become non-nullable can still be used
-/// with `!` and `?` on the stable branch.
-// TODO(ianh): Remove this once the relevant APIs have shipped to stable.
-// See https://github.com/flutter/flutter/issues/64830
-T? _ambiguate<T>(T? value) => value;
diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md
index b6f42a4..0d1e45d 100644
--- a/packages/flutter_markdown/CHANGELOG.md
+++ b/packages/flutter_markdown/CHANGELOG.md
@@ -1,7 +1,8 @@
-## NEXT
+## 0.6.10+1
 
 * Updates Linux example to remove unneeded library dependencies that
   could cause build failures.
+* Updates for non-nullable bindings.
 
 ## 0.6.10
 
diff --git a/packages/flutter_markdown/example/pubspec.yaml b/packages/flutter_markdown/example/pubspec.yaml
index 44eda03..5454129 100644
--- a/packages/flutter_markdown/example/pubspec.yaml
+++ b/packages/flutter_markdown/example/pubspec.yaml
@@ -1,6 +1,6 @@
 name: flutter_markdown_example
 description: Demonstrates how to use the flutter_markdown package.
-publish_to: "none"
+publish_to: none
 
 environment:
   sdk: '>=2.12.0 <3.0.0'
diff --git a/packages/flutter_markdown/pubspec.yaml b/packages/flutter_markdown/pubspec.yaml
index 31b82b2..a675b61 100644
--- a/packages/flutter_markdown/pubspec.yaml
+++ b/packages/flutter_markdown/pubspec.yaml
@@ -4,11 +4,11 @@
   formatted with simple Markdown tags.
 repository: https://github.com/flutter/packages/tree/main/packages/flutter_markdown
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_markdown%22
-version: 0.6.10
+version: 0.6.10+1
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
-  flutter: ">=1.17.0"
+  flutter: ">=3.0.0"
 
 dependencies:
   flutter:
diff --git a/packages/flutter_markdown/test/utils.dart b/packages/flutter_markdown/test/utils.dart
index dcf5288..0f1a092 100644
--- a/packages/flutter_markdown/test/utils.dart
+++ b/packages/flutter_markdown/test/utils.dart
@@ -154,10 +154,7 @@
 }
 
 String dumpRenderView() {
-  return _ambiguate(WidgetsBinding.instance)!
-      .renderViewElement!
-      .toStringDeep()
-      .replaceAll(
+  return WidgetsBinding.instance.renderViewElement!.toStringDeep().replaceAll(
         RegExp(r'SliverChildListDelegate#\d+', multiLine: true),
         'SliverChildListDelegate',
       );
@@ -201,11 +198,3 @@
     }
   }
 }
-
-/// This allows a value of type T or T? to be treated as a value of type T?.
-///
-/// We use this so that APIs that have become non-nullable can still be used
-/// with `!` and `?` on the stable branch.
-// TODO(ianh): Remove this once the relevant APIs have shipped to stable.
-// See https://github.com/flutter/flutter/issues/64830
-T? _ambiguate<T>(T? value) => value;
diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md
index 09de8d6..4bf27b8 100644
--- a/packages/pigeon/CHANGELOG.md
+++ b/packages/pigeon/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 3.1.1
+
+* Updates for non-nullable bindings.
+
 ## 3.1.0
 
 * [c++] Adds C++ code generator.
diff --git a/packages/pigeon/lib/generator_tools.dart b/packages/pigeon/lib/generator_tools.dart
index 97f62e0..eee7c24 100644
--- a/packages/pigeon/lib/generator_tools.dart
+++ b/packages/pigeon/lib/generator_tools.dart
@@ -5,10 +5,11 @@
 import 'dart:convert';
 import 'dart:io';
 import 'dart:mirrors';
+
 import 'ast.dart';
 
 /// The current version of pigeon. This must match the version in pubspec.yaml.
-const String pigeonVersion = '3.1.0';
+const String pigeonVersion = '3.1.1';
 
 /// Read all the content from [stdin] to a String.
 String readStdin() {
diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/pubspec.yaml b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/pubspec.yaml
index dad6b7c..191bc8a 100644
--- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/pubspec.yaml
+++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/pubspec.yaml
@@ -1,6 +1,6 @@
 name: flutter_unit_tests
 description: Unit test scaffold for null safe Flutter projects.
-publish_to: 'none' # Remove this line if you wish to publish to pub.dev
+publish_to: none # Remove this line if you wish to publish to pub.dev
 version: 1.0.0+1
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart
index 5cd468c..cae18df 100644
--- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart
+++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart
@@ -10,6 +10,7 @@
 import 'package:flutter_unit_tests/nullable_returns.gen.dart';
 import 'package:mockito/annotations.dart';
 import 'package:mockito/mockito.dart';
+
 import 'null_safe_test.mocks.dart';
 import 'test_util.dart';
 
@@ -134,11 +135,7 @@
     NullableArgFlutterApi.setup(mockFlutterApi);
 
     final Completer<int> resultCompleter = Completer<int>();
-    // Null check operator is used because ServicesBinding.instance is nullable
-    // in earlier versions of Flutter.
-    _ambiguate(ServicesBinding.instance)!
-        .defaultBinaryMessenger
-        .handlePlatformMessage(
+    ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage(
       'dev.flutter.pigeon.NullableArgFlutterApi.doit',
       NullableArgFlutterApi.codec.encodeMessage(<Object?>[null]),
       (ByteData? data) {
@@ -162,11 +159,7 @@
     NullableCollectionArgFlutterApi.setup(mockFlutterApi);
 
     final Completer<List<String?>> resultCompleter = Completer<List<String?>>();
-    // Null check operator is used because ServicesBinding.instance is nullable
-    // in earlier versions of Flutter.
-    _ambiguate(ServicesBinding.instance)!
-        .defaultBinaryMessenger
-        .handlePlatformMessage(
+    ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage(
       'dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit',
       NullableCollectionArgFlutterApi.codec.encodeMessage(<Object?>[null]),
       (ByteData? data) {
@@ -219,11 +212,7 @@
     NullableReturnFlutterApi.setup(mockFlutterApi);
 
     final Completer<int?> resultCompleter = Completer<int?>();
-    // Null check operator is used because ServicesBinding.instance is nullable
-    // in earlier versions of Flutter.
-    _ambiguate(ServicesBinding.instance)!
-        .defaultBinaryMessenger
-        .handlePlatformMessage(
+    ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage(
       'dev.flutter.pigeon.NullableReturnFlutterApi.doit',
       NullableReturnFlutterApi.codec.encodeMessage(<Object?>[]),
       (ByteData? data) {
@@ -246,11 +235,7 @@
 
     final Completer<List<String?>?> resultCompleter =
         Completer<List<String?>?>();
-    // Null check operator is used because ServicesBinding.instance is nullable
-    // in earlier versions of Flutter.
-    _ambiguate(ServicesBinding.instance)!
-        .defaultBinaryMessenger
-        .handlePlatformMessage(
+    ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage(
       'dev.flutter.pigeon.NullableCollectionReturnFlutterApi.doit',
       NullableCollectionReturnFlutterApi.codec.encodeMessage(<Object?>[]),
       (ByteData? data) {
@@ -264,10 +249,3 @@
     NullableArgFlutterApi.setup(null);
   });
 }
-
-/// This allows a value of type T or T? to be treated as a value of type T?.
-///
-/// We use this so that APIs that have become non-nullable can still be used
-/// with `!` and `?` on the stable branch.
-// TODO(stuartmorgan): Remove this once 2.13 or later is on the stable channel.
-T? _ambiguate<T>(T? value) => value;
diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml
index 714c09d..f1e8da8 100644
--- a/packages/pigeon/pubspec.yaml
+++ b/packages/pigeon/pubspec.yaml
@@ -2,10 +2,11 @@
 description: Code generator tool to make communication between Flutter and the host platform type-safe and easier.
 repository: https://github.com/flutter/packages/tree/main/packages/pigeon
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3Apigeon
-version: 3.1.0 # This must match the version in lib/generator_tools.dart
+version: 3.1.1 # This must match the version in lib/generator_tools.dart
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
+  flutter: ">=3.0.0"
 
 dependencies:
   analyzer: ^2.4.0
diff --git a/packages/rfw/CHANGELOG.md b/packages/rfw/CHANGELOG.md
index 67b171a..3b97c65 100644
--- a/packages/rfw/CHANGELOG.md
+++ b/packages/rfw/CHANGELOG.md
@@ -1,8 +1,9 @@
-## NEXT
+## 1.0.3
 
 * Transitions internal testing from a command line lcov tool to a
   Dart tool. No effect on consumers.
 * Removes unsupported platforms from the wasm example.
+* Updates for non-nullable bindings.
 
 ## 1.0.2
 
diff --git a/packages/rfw/example/wasm/lib/main.dart b/packages/rfw/example/wasm/lib/main.dart
index 007f1f2..0c46c21 100644
--- a/packages/rfw/example/wasm/lib/main.dart
+++ b/packages/rfw/example/wasm/lib/main.dart
@@ -38,7 +38,7 @@
   @override
   void initState() {
     super.initState();
-    _ambiguate(RendererBinding.instance)!.deferFirstFrame();
+    RendererBinding.instance.deferFirstFrame();
     _runtime.update(const LibraryName(<String>['core', 'widgets']), createCoreWidgets());
     _loadLogic();
   }
@@ -62,7 +62,7 @@
     _logic = WasmModule(await logicFile.readAsBytes()).builder().build();
     _dataFetcher = _logic.lookupFunction('value');
     _updateData();
-    setState(() { _ambiguate(RendererBinding.instance)!.allowFirstFrame(); });
+    setState(() { RendererBinding.instance.allowFirstFrame(); });
   }
 
   void _updateData() {
@@ -78,7 +78,7 @@
 
   @override
   Widget build(BuildContext context) {
-    if (!_ambiguate(RendererBinding.instance)!.sendFramesToEngine)
+    if (!RendererBinding.instance.sendFramesToEngine)
       return const SizedBox.shrink();
     return RemoteWidget(
       runtime: _runtime,
@@ -92,11 +92,3 @@
     );
   }
 }
-
-/// This allows a value of type T or T? to be treated as a value of type T?.
-///
-/// We use this so that APIs that have become non-nullable can still be used
-/// with `!` and `?` on the stable branch.
-// TODO(ianh): Remove this once the relevant APIs have shipped to stable.
-// See https://github.com/flutter/flutter/issues/64830
-T? _ambiguate<T>(T? value) => value;
diff --git a/packages/rfw/example/wasm/pubspec.yaml b/packages/rfw/example/wasm/pubspec.yaml
index 96af1a5..5267a69 100644
--- a/packages/rfw/example/wasm/pubspec.yaml
+++ b/packages/rfw/example/wasm/pubspec.yaml
@@ -1,6 +1,6 @@
 name: rfw_wasm
 description: Example of using Wasm with RFW
-publish_to: 'none' # Remove this line if you wish to publish to pub.dev
+publish_to: none # Remove this line if you wish to publish to pub.dev
 version: 1.0.0+1
 
 environment:
diff --git a/packages/rfw/pubspec.yaml b/packages/rfw/pubspec.yaml
index ff93edf..8865604 100644
--- a/packages/rfw/pubspec.yaml
+++ b/packages/rfw/pubspec.yaml
@@ -2,11 +2,11 @@
 description: "Remote Flutter widgets: a library for rendering declarative widget description files at runtime."
 repository: https://github.com/flutter/packages/tree/main/packages/rfw
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+rfw%22
-version: 1.0.2
+version: 1.0.3
 
 environment:
   sdk: ">=2.13.0 <3.0.0"
-  flutter: ">=1.17.0"
+  flutter: ">=3.0.0"
 
 dependencies:
   flutter:
@@ -16,3 +16,4 @@
 dev_dependencies:
   flutter_test:
     sdk: flutter
+  lcov_parser: ^0.1.2
