diff --git a/DEPS b/DEPS
index b87899a..2061c1c 100644
--- a/DEPS
+++ b/DEPS
@@ -119,7 +119,7 @@
   "http_io_rev": "2fa188caf7937e313026557713f7feffedd4978b",
   "http_multi_server_rev": "34bf7f04b61cce561f47f7f275c2cc811534a05a",
   "http_parser_rev": "202391286ddc13c4c3c284ac5b511f04697250ed",
-  "http_rev": "1e42ffa181b263f7790f276a5465832bff7ce615",
+  "http_rev": "a645b938f766d6c9f48724ee55d40e1b394bfae4",
   "icu_rev" : "81d656878ec611cb0b42d52c82e9dae93920d9ba",
   "intl_tag": "9669926609e7efc17dfd74fbb44ec719a7e573cc", # 0.17.0-nullsafety
   "jinja2_rev": "2222b31554f03e62600cd7e383376a7c187967a1",
@@ -131,7 +131,7 @@
   "markdown_rev": "7479783f0493f6717e1d7ae31cb37d39a91026b2",
   "matcher_rev": "07595a7739d47a8315caba5a8e58fb9ae3d81261",
   "mime_rev": "c2c5ffd594674f32dc277521369da1557a1622d3",
-  "mockito_rev": "d39ac507483b9891165e422ec98d9fb480037c8b",
+  "mockito_rev": "1e977a727e82a2e1bdb49b79ef1dce0f23aa1faa",
   "oauth2_rev": "7cd3284049fe5badbec9f2bea2afc41d14c01057",
   "package_config_rev": "8731bf10b5375542792a32a0f7c8a6f370583d96",
   "path_rev": "baedce9d2ca11ea2cdf54395a74eb038087777a4",
diff --git a/pkg/analysis_server/lib/src/cider/rename.dart b/pkg/analysis_server/lib/src/cider/rename.dart
index a306461..33ba10e 100644
--- a/pkg/analysis_server/lib/src/cider/rename.dart
+++ b/pkg/analysis_server/lib/src/cider/rename.dart
@@ -129,7 +129,7 @@
     if (node == null || element == null) {
       return null;
     }
-    if (element.source != null && element.source!.uri.isScheme('dart')) {
+    if (element.library?.isInSdk == true) {
       return null;
     }
     if (element is MethodElement && element.isOperator) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_enum_constant.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_enum_constant.dart
new file mode 100644
index 0000000..f2ed14c
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_enum_constant.dart
@@ -0,0 +1,81 @@
+// 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.
+
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+
+class AddEnumConstant extends CorrectionProducer {
+  /// The name of the constant to be created.
+  String _constantName = '';
+
+  @override
+  // Not predictably the correct action.
+  bool get canBeAppliedInBulk => false;
+
+  @override
+  // Not predictably the correct action.
+  bool get canBeAppliedToFile => false;
+
+  @override
+  List<Object> get fixArguments => [_constantName];
+
+  @override
+  FixKind get fixKind => DartFixKind.ADD_ENUM_CONSTANT;
+
+  @override
+  Future<void> compute(ChangeBuilder builder) async {
+    var node = this.node;
+    if (node is! SimpleIdentifier) return;
+    var parent = node.parent;
+    if (parent is! PrefixedIdentifier) return;
+
+    _constantName = node.name;
+    var target = parent.prefix;
+
+    var targetElement = target.staticElement;
+    if (targetElement == null) return;
+    if (targetElement.library?.isInSdk == true) return;
+
+    var targetDeclarationResult =
+        await sessionHelper.getElementDeclaration(targetElement);
+    if (targetDeclarationResult == null) return;
+    var targetNode = targetDeclarationResult.node;
+    if (targetNode is! EnumDeclaration) return;
+
+    var targetUnit = targetDeclarationResult.resolvedUnit;
+    if (targetUnit == null) return;
+
+    var targetSource = targetElement.source;
+    var targetFile = targetSource?.fullName;
+    if (targetFile == null) return;
+
+    var constructors = targetNode.members
+        .whereType<ConstructorDeclaration>()
+        .where((con) => con.factoryKeyword == null);
+
+    if (constructors.any((con) => con.parameters.parameters.isNotEmpty)) {
+      return;
+    }
+
+    var length = constructors.length;
+    if (length > 1) return;
+
+    var name = length == 1 ? constructors.first.name?.name : null;
+
+    var offset = targetNode.constants.last.end;
+
+    var addition = name != null ? '.$name()' : '';
+
+    await builder.addDartFileEdit(targetFile, (builder) {
+      builder.addInsertion(offset, (builder) {
+        builder.write(', ');
+        builder.write(_constantName);
+        builder.write(addition);
+      });
+    });
+  }
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_field.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_field.dart
index 287df7c..7d54c79 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_field.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_field.dart
@@ -96,7 +96,7 @@
     if (targetClassElement == null) {
       return;
     }
-    if (targetClassElement.librarySource.uri.isScheme('dart')) {
+    if (targetClassElement.library.isInSdk) {
       return;
     }
     utils.targetClassElement = targetClassElement;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_getter.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_getter.dart
index 60620d7..ad72979 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_getter.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_getter.dart
@@ -74,7 +74,7 @@
       return;
     }
     var targetSource = targetElement.source;
-    if (targetSource == null || targetSource.uri.isScheme('dart')) {
+    if (targetSource == null || targetElement.library?.isInSdk == true) {
       return;
     }
     // prepare target declaration
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_method.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_method.dart
index 04a0cf8..14b09df 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_method.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_method.dart
@@ -154,7 +154,7 @@
         return;
       }
       targetElement = targetClassElement;
-      if (targetClassElement.librarySource.uri.isScheme('dart')) {
+      if (targetClassElement.library.isInSdk) {
         return;
       }
       // prepare target ClassDeclaration
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_setter.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_setter.dart
index 9acc150..5133d6a 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_setter.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_setter.dart
@@ -73,7 +73,7 @@
       return;
     }
     var targetSource = targetElement.source;
-    if (targetSource == null || targetSource.uri.isScheme('dart')) {
+    if (targetSource == null || targetElement.library?.isInSdk == true) {
       return;
     }
     // prepare target declaration
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/import_library.dart b/pkg/analysis_server/lib/src/services/correction/dart/import_library.dart
index 4536421..e6b8f80 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/import_library.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/import_library.dart
@@ -306,7 +306,7 @@
       }
       // Compute the fix kind.
       FixKind fixKind;
-      if (librarySource.uri.isScheme('dart')) {
+      if (libraryElement.isInSdk) {
         fixKind = DartFixKind.IMPORT_LIBRARY_SDK;
       } else if (_isLibSrcPath(librarySource.fullName)) {
         // Bad: non-API.
diff --git a/pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml b/pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml
index 447bb63..c63b94e 100644
--- a/pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml
+++ b/pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml
@@ -953,7 +953,8 @@
 CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT:
   status: hasFix
 CompileTimeErrorCode.UNDEFINED_ENUM_CONSTANT:
-  status: needsEvaluation
+  status: hasFix
+  issue: https://github.com/dart-lang/sdk/issues/47643
 CompileTimeErrorCode.UNDEFINED_ENUM_CONSTRUCTOR_NAMED:
   status: needsFix
   since: 2.17
diff --git a/pkg/analysis_server/lib/src/services/correction/fix.dart b/pkg/analysis_server/lib/src/services/correction/fix.dart
index 0a1eee9..1909be2 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix.dart
@@ -123,6 +123,11 @@
     DartFixKindPriority.IN_FILE,
     'Add missing debug property references everywhere in file',
   );
+  static const ADD_ENUM_CONSTANT = FixKind(
+    'dart.fix.add.enumConstant',
+    DartFixKindPriority.DEFAULT,
+    "Add enum constant '{0}'",
+  );
   static const ADD_EOL_AT_END_OF_FILE = FixKind(
     'dart.fix.add.eolAtEndOfFile',
     DartFixKindPriority.DEFAULT,
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index a24a679..f0c4310 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -10,6 +10,7 @@
 import 'package:analysis_server/src/services/correction/dart/add_await.dart';
 import 'package:analysis_server/src/services/correction/dart/add_const.dart';
 import 'package:analysis_server/src/services/correction/dart/add_diagnostic_property_reference.dart';
+import 'package:analysis_server/src/services/correction/dart/add_enum_constant.dart';
 import 'package:analysis_server/src/services/correction/dart/add_eol_at_end_of_file.dart';
 import 'package:analysis_server/src/services/correction/dart/add_explicit_cast.dart';
 import 'package:analysis_server/src/services/correction/dart/add_field_formal_parameters.dart';
@@ -1083,6 +1084,9 @@
     CompileTimeErrorCode.UNDEFINED_CLASS_BOOLEAN: [
       ReplaceBooleanWithBool.new,
     ],
+    CompileTimeErrorCode.UNDEFINED_ENUM_CONSTANT: [
+      AddEnumConstant.new,
+    ],
     CompileTimeErrorCode.UNDEFINED_EXTENSION_GETTER: [
       ChangeTo.getterOrSetter,
       CreateGetter.new,
diff --git a/pkg/analysis_server/lib/src/services/refactoring/rename.dart b/pkg/analysis_server/lib/src/services/refactoring/rename.dart
index 8fbe15a..7f93bf1 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/rename.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/rename.dart
@@ -73,7 +73,7 @@
   @override
   Future<RefactoringStatus> checkInitialConditions() {
     var result = RefactoringStatus();
-    if (element.source!.uri.isScheme('dart')) {
+    if (element.library?.isInSdk == true) {
       var message = format(
           "The {0} '{1}' is defined in the SDK, so cannot be renamed.",
           getElementKindName(element),
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_enum_constant_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_enum_constant_test.dart
new file mode 100644
index 0000000..4fa8591
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_enum_constant_test.dart
@@ -0,0 +1,232 @@
+// 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.
+
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'fix_processor.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(AddEnumConstantTest);
+  });
+}
+
+@reflectiveTest
+class AddEnumConstantTest extends FixProcessorTest {
+  @override
+  FixKind get kind => DartFixKind.ADD_ENUM_CONSTANT;
+
+  Future<void> test_add() async {
+    await resolveTestCode('''
+enum E {ONE}
+
+E e() {
+  return E.TWO;
+}
+''');
+    await assertHasFix('''
+enum E {ONE, TWO}
+
+E e() {
+  return E.TWO;
+}
+''', matchFixMessage: "Add enum constant 'TWO'");
+  }
+
+  Future<void> test_differentLibrary() async {
+    addSource('$testPackageLibPath/a.dart', '''
+enum E {ONE}
+''');
+
+    await resolveTestCode('''
+import 'a.dart';
+
+E e() {
+  return E.TWO;
+}
+''');
+
+    await assertHasFix('''
+enum E {ONE, TWO}
+''', target: '$testPackageLibPath/a.dart');
+  }
+
+  Future<void> test_named() async {
+    await resolveTestCode('''
+enum E {
+  ONE.named();
+
+  const E.named();
+}
+
+E e() {
+  return E.TWO;
+}
+''');
+
+    await assertHasFix('''
+enum E {
+  ONE.named(), TWO.named();
+
+  const E.named();
+}
+
+E e() {
+  return E.TWO;
+}
+''');
+  }
+
+  Future<void> test_named_factory() async {
+    await resolveTestCode('''
+enum E {
+  ONE.named();
+
+  const E.named();
+  factory E.f() => ONE;
+}
+
+E e() {
+  return E.TWO;
+}
+''');
+
+    await assertHasFix('''
+enum E {
+  ONE.named(), TWO.named();
+
+  const E.named();
+  factory E.f() => ONE;
+}
+
+E e() {
+  return E.TWO;
+}
+''');
+  }
+
+  Future<void> test_named_named() async {
+    await resolveTestCode('''
+enum E {
+  ONE.something(), TWO.other();
+
+  const E.something();
+  const E.other();
+}
+
+E e() {
+  return E.THREE;
+}
+''');
+
+    await assertNoFix();
+  }
+
+  Future<void> test_named_non_zero() async {
+    await resolveTestCode('''
+enum E {
+  ONE.named(1);
+
+  final int i;
+  const E.named(this.i);
+}
+
+E e() {
+  return E.TWO;
+}
+''');
+
+    await assertNoFix();
+  }
+
+  Future<void> test_named_unnamed() async {
+    await resolveTestCode('''
+enum E {
+  ONE.named();
+
+  const E.named();
+  const E();
+}
+
+E e() {
+  return E.TWO;
+}
+''');
+
+    await assertNoFix();
+  }
+
+  Future<void> test_unnamed() async {
+    await resolveTestCode('''
+enum E {
+  ONE;
+
+  const E();
+}
+
+E e() {
+  return E.TWO;
+}
+''');
+
+    await assertHasFix('''
+enum E {
+  ONE, TWO;
+
+  const E();
+}
+
+E e() {
+  return E.TWO;
+}
+''');
+  }
+
+  Future<void> test_unnamed_factory() async {
+    await resolveTestCode('''
+enum E {
+  ONE;
+
+  const E();
+  factory E.f() => ONE;
+}
+
+E e() {
+  return E.TWO;
+}
+''');
+
+    await assertHasFix('''
+enum E {
+  ONE, TWO;
+
+  const E();
+  factory E.f() => ONE;
+}
+
+E e() {
+  return E.TWO;
+}
+''');
+  }
+
+  Future<void> test_unnamed_non_zero() async {
+    await resolveTestCode('''
+enum E {
+  ONE(1);
+
+  final int i;
+  const E(this.i);
+}
+
+E e() {
+  return E.TWO;
+}
+''');
+
+    await assertNoFix();
+  }
+}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/test_all.dart b/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
index d2b42a9..278017c 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
@@ -10,6 +10,7 @@
 import 'add_curly_braces_test.dart' as add_curly_braces;
 import 'add_diagnostic_property_reference_test.dart'
     as add_diagnostic_property_reference;
+import 'add_enum_constant_test.dart' as add_enum_constant_test;
 import 'add_eol_at_end_of_file_test.dart' as add_eol_at_end_of_file;
 import 'add_explicit_cast_test.dart' as add_explicit_cast;
 import 'add_field_formal_parameters_test.dart' as add_field_formal_parameters;
@@ -238,6 +239,7 @@
     add_const.main();
     add_curly_braces.main();
     add_diagnostic_property_reference.main();
+    add_enum_constant_test.main();
     add_eol_at_end_of_file.main();
     add_explicit_cast.main();
     add_field_formal_parameters.main();
diff --git a/tools/VERSION b/tools/VERSION
index 32f8ad6..7097e6f 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 23
+PRERELEASE 24
 PRERELEASE_PATCH 0
\ No newline at end of file
