diff --git a/packages/flutter/lib/src/material/selectable_text.dart b/packages/flutter/lib/src/material/selectable_text.dart
index bd9fc6f..7fc8433 100644
--- a/packages/flutter/lib/src/material/selectable_text.dart
+++ b/packages/flutter/lib/src/material/selectable_text.dart
@@ -31,7 +31,7 @@
   final TextSpan _textSpan;
 
   @override
-  TextSpan buildTextSpan({TextStyle? style, required bool withComposing, required BuildContext context}) {
+  TextSpan buildTextSpan({TextStyle? style ,bool? withComposing}) {
     // This does not care about composing.
     return TextSpan(
       style: style,
diff --git a/packages/flutter/lib/src/widgets/editable_text.dart b/packages/flutter/lib/src/widgets/editable_text.dart
index 828e1fc..7e374eb 100644
--- a/packages/flutter/lib/src/widgets/editable_text.dart
+++ b/packages/flutter/lib/src/widgets/editable_text.dart
@@ -185,7 +185,7 @@
   ///
   /// By default makes text in composing range appear as underlined. Descendants
   /// can override this method to customize appearance of text.
-  TextSpan buildTextSpan({TextStyle? style , required bool withComposing, required BuildContext context}) {
+  TextSpan buildTextSpan({TextStyle? style , required bool withComposing}) {
     assert(!value.composing.isValid || !withComposing || value.isComposingRangeValid);
     // If the composing range is out of range for the current text, ignore it to
     // preserve the tree integrity, otherwise in release mode a RangeError will
@@ -2669,7 +2669,6 @@
     return widget.controller.buildTextSpan(
       style: widget.style,
       withComposing: !widget.readOnly,
-      context: context,
     );
   }
 }
diff --git a/packages/flutter/test/widgets/editable_text_test.dart b/packages/flutter/test/widgets/editable_text_test.dart
index 27a4f25..f15876d 100644
--- a/packages/flutter/test/widgets/editable_text_test.dart
+++ b/packages/flutter/test/widgets/editable_text_test.dart
@@ -5674,25 +5674,6 @@
         }),
       );
     });
-
-    testWidgets('TextEditingController.buildTextSpan receives build context', (WidgetTester tester) async {
-      final _AccentColorTextEditingController controller = _AccentColorTextEditingController('a');
-      const Color color = Color.fromARGB(255, 1, 2, 3);
-      await tester.pumpWidget(MaterialApp(
-        theme: ThemeData.light().copyWith(accentColor: color),
-        home: EditableText(
-          controller: controller,
-          focusNode: FocusNode(),
-          style: Typography.material2018(platform: TargetPlatform.android).black.subtitle1!,
-          cursorColor: Colors.blue,
-          backgroundCursorColor: Colors.grey,
-        ),
-      ));
-
-      final RenderEditable renderEditable = findRenderEditable(tester);
-      final TextSpan textSpan = renderEditable.text!;
-      expect(textSpan.style!.color, color);
-    });
   });
 
   testWidgets('autofocus:true on first frame does not throw', (WidgetTester tester) async {
@@ -7169,13 +7150,3 @@
   @override
   void paint(PaintingContext context, Offset offset) { }
 }
-
-class _AccentColorTextEditingController extends TextEditingController {
-  _AccentColorTextEditingController(String text) : super(text: text);
-
-  @override
-  TextSpan buildTextSpan({TextStyle? style, required bool withComposing, required BuildContext context}) {
-    final Color color = Theme.of(context).accentColor;
-    return super.buildTextSpan(style: TextStyle(color: color), withComposing: withComposing, context: context);
-  }
-}
