diff --git a/.cirrus.yml b/.cirrus.yml
index 5b73ffb..ef93b57 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -118,6 +118,18 @@
           - else
           -   ./script/tool_runner.sh version-check --check-for-missing-changes --pr-labels="$CIRRUS_PR_LABELS"
           - fi
+        publishable_bug_workaround_script:
+          # Workaround for https://github.com/dart-lang/pub/issues/3618
+          # TODO(stuartmorgan): Remove this once that issue is fixed.
+          - cd packages/pigeon
+          - pushd mock_handler_tester; flutter pub get; popd
+          - pushd e2e_tests/test_objc; flutter pub get; popd
+          - pushd platform_tests/ios_swift_unit_tests; flutter pub get; popd
+          - pushd platform_tests/windows_unit_tests; flutter pub get; popd
+          - pushd platform_tests/ios_unit_tests; flutter pub get; popd
+          - pushd platform_tests/flutter_null_safe_unit_tests; flutter pub get; popd
+          - pushd platform_tests/android_kotlin_unit_tests; flutter pub get; popd
+          - pushd platform_tests/android_unit_tests; flutter pub get; popd
         publishable_script: ./script/tool_runner.sh publish-check --allow-pre-release
     - name: dart_unit_tests
       env:
diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md
index ddf96c8..cdebafe 100644
--- a/packages/pigeon/CHANGELOG.md
+++ b/packages/pigeon/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 4.2.5
+
+* [dart] Fixes enum parameter handling in Dart test API class.
+
 ## 4.2.4
 
 * [kotlin] Fixes Kotlin generated sync host api error.
diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart
index 70da7ca..f87297a 100644
--- a/packages/pigeon/lib/dart_generator.dart
+++ b/packages/pigeon/lib/dart_generator.dart
@@ -276,6 +276,8 @@
   bool isMockHandler = false,
 }) {
   assert(api.location == ApiLocation.flutter);
+  final List<String> customEnumNames =
+      root.enums.map((Enum x) => x.name).toList();
   String codecName = _standardMessageCodec;
   if (getCodecClasses(api, root).isNotEmpty) {
     codecName = _getCodecName(api);
@@ -358,8 +360,14 @@
                       _makeGenericTypeArguments(arg.type);
                   final String castCall = _makeGenericCastCall(arg.type);
 
-                  indent.writeln(
-                      'final $argType? $argName = ($argsArray[$count] as $genericArgType?)${castCall.isEmpty ? '' : '?$castCall'};');
+                  final String leftHandSide = 'final $argType? $argName';
+                  if (customEnumNames.contains(arg.type.baseName)) {
+                    indent.writeln(
+                        '$leftHandSide = $argsArray[$count] == null ? null : $argType.values[$argsArray[$count] as int];');
+                  } else {
+                    indent.writeln(
+                        '$leftHandSide = ($argsArray[$count] as $genericArgType?)${castCall.isEmpty ? '' : '?$castCall'};');
+                  }
                   if (!arg.type.isNullable) {
                     indent.writeln(
                         "assert($argName != null, 'Argument for $channelName was null, expected non-null $argType.');");
diff --git a/packages/pigeon/lib/generator_tools.dart b/packages/pigeon/lib/generator_tools.dart
index bc58a70..7c988f8 100644
--- a/packages/pigeon/lib/generator_tools.dart
+++ b/packages/pigeon/lib/generator_tools.dart
@@ -9,7 +9,7 @@
 import 'ast.dart';
 
 /// The current version of pigeon. This must match the version in pubspec.yaml.
-const String pigeonVersion = '4.2.4';
+const String pigeonVersion = '4.2.5';
 
 /// Read all the content from [stdin] to a String.
 String readStdin() {
diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml
index 42674d6..7d5060f 100644
--- a/packages/pigeon/pubspec.yaml
+++ b/packages/pigeon/pubspec.yaml
@@ -2,7 +2,7 @@
 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: 4.2.4 # This must match the version in lib/generator_tools.dart
+version: 4.2.5 # This must match the version in lib/generator_tools.dart
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/pigeon/test/dart_generator_test.dart b/packages/pigeon/test/dart_generator_test.dart
index 582b29e..1c16311 100644
--- a/packages/pigeon/test/dart_generator_test.dart
+++ b/packages/pigeon/test/dart_generator_test.dart
@@ -1309,4 +1309,51 @@
     final String code = sink.toString();
     expect(code, contains('extends StandardMessageCodec'));
   });
+
+  test('host test code handles enums', () {
+    final Root root = Root(
+      apis: <Api>[
+        Api(
+            name: 'Api',
+            location: ApiLocation.host,
+            dartHostTestHandler: 'ApiMock',
+            methods: <Method>[
+              Method(
+                  name: 'doit',
+                  returnType: const TypeDeclaration.voidDeclaration(),
+                  arguments: <NamedType>[
+                    NamedType(
+                        type: const TypeDeclaration(
+                          baseName: 'Enum',
+                          isNullable: false,
+                        ),
+                        name: 'anEnum')
+                  ])
+            ])
+      ],
+      classes: <Class>[],
+      enums: <Enum>[
+        Enum(
+          name: 'Enum',
+          members: <String>[
+            'one',
+            'two',
+          ],
+        )
+      ],
+    );
+    final StringBuffer sink = StringBuffer();
+    generateTestDart(
+      const DartOptions(),
+      root,
+      sink,
+      dartOutPath: 'code.dart',
+      testOutPath: 'test.dart',
+    );
+    final String testCode = sink.toString();
+    expect(
+        testCode,
+        contains(
+            'final Enum? arg_anEnum = args[0] == null ? null : Enum.values[args[0] as int]'));
+  });
 }
