diff --git a/lib/src/rules/use_key_in_widget_constructors.dart b/lib/src/rules/use_key_in_widget_constructors.dart
index 53c827722..167903908 100644
--- a/lib/src/rules/use_key_in_widget_constructors.dart
+++ b/lib/src/rules/use_key_in_widget_constructors.dart
@@ -79,6 +79,7 @@ class _Visitor extends SimpleAstVisitor<void> {
         classElement.isPublic &&
         hasWidgetAsAscendant(classElement) &&
         !isExactWidget(classElement) &&
+        !_hasKeySuperParameterInitializerArg(node) &&
         !node.initializers.any((initializer) {
           if (initializer is SuperConstructorInvocation) {
             var staticElement = initializer.staticElement;
@@ -98,12 +99,23 @@ class _Visitor extends SimpleAstVisitor<void> {
     super.visitConstructorDeclaration(node);
   }
 
-  bool _defineKeyParameter(ConstructorElement element) =>
-      element.parameters.any((e) => e.name == 'key' && _isKeyType(e.type));
-
   bool _defineKeyArgument(ArgumentList argumentList) => argumentList.arguments
       .any((a) => a.staticParameterElement?.name == 'key');
 
+  bool _defineKeyParameter(ConstructorElement element) =>
+      element.parameters.any((e) => e.name == 'key' && _isKeyType(e.type));
+
   bool _isKeyType(DartType type) =>
       DartTypeUtilities.implementsInterface(type, 'Key', '');
+
+  bool _hasKeySuperParameterInitializerArg(ConstructorDeclaration node) {
+    for (var parameter in node.parameters.parameters) {
+      var element = parameter.declaredElement;
+      if (element is SuperFormalParameterElement && element.name == 'key') {
+        return true;
+      }
+    }
+
+    return false;
+  }
 }
diff --git a/test_data/rules/experiments/super_parameters/analysis_options.yaml b/test_data/rules/experiments/super_parameters/analysis_options.yaml
new file mode 100644
index 000000000..16dd3805f
--- /dev/null
+++ b/test_data/rules/experiments/super_parameters/analysis_options.yaml
@@ -0,0 +1,3 @@
+analyzer:
+  enable-experiment:
+    - super-parameters
diff --git a/test_data/rules/experiments/super_parameters/rules/.mock_packages b/test_data/rules/experiments/super_parameters/rules/.mock_packages
new file mode 100644
index 000000000..236a8a870
--- /dev/null
+++ b/test_data/rules/experiments/super_parameters/rules/.mock_packages
@@ -0,0 +1 @@
+flutter:../../../../mock_packages/flutter/lib/
diff --git a/test_data/rules/experiments/super_parameters/rules/use_key_in_widget_constructors.dart b/test_data/rules/experiments/super_parameters/rules/use_key_in_widget_constructors.dart
new file mode 100644
index 000000000..7fa56f920
--- /dev/null
+++ b/test_data/rules/experiments/super_parameters/rules/use_key_in_widget_constructors.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// test w/ `dart test -N use_key_in_widget_constructors`
+
+import 'package:flutter/foundation.dart';
+import 'package:flutter/widgets.dart';
+
+/// https://github.com/flutter/flutter/issues/100297
+class OtherWidget extends StatelessWidget {
+  const OtherWidget({required super.key}); //OK
+
+  @override
+  Widget build(BuildContext context) {
+    return Container();
+  }
+}
+