diff --git a/dev/bots/check_tests_cross_imports.dart b/dev/bots/check_tests_cross_imports.dart
index ec4dde3..cbc3f2c 100644
--- a/dev/bots/check_tests_cross_imports.dart
+++ b/dev/bots/check_tests_cross_imports.dart
@@ -119,7 +119,6 @@
     'packages/flutter/test/widgets/inherited_test.dart',
     'packages/flutter/test/widgets/heroes_test.dart',
     'packages/flutter/test/widgets/drawer_test.dart',
-    'packages/flutter/test/widgets/editable_text_cursor_test.dart',
     'packages/flutter/test/widgets/nested_scroll_view_test.dart',
     'packages/flutter/test/widgets/scrollable_selection_test.dart',
     'packages/flutter/test/widgets/page_transitions_builder_test.dart',
diff --git a/packages/flutter/test/widgets/editable_text_cursor_test.dart b/packages/flutter/test/widgets/editable_text_cursor_test.dart
index bb8aa4f..4291fe4 100644
--- a/packages/flutter/test/widgets/editable_text_cursor_test.dart
+++ b/packages/flutter/test/widgets/editable_text_cursor_test.dart
@@ -11,16 +11,43 @@
 import 'dart:math' as math;
 
 import 'package:flutter/foundation.dart';
-import 'package:flutter/material.dart';
 import 'package:flutter/rendering.dart';
 import 'package:flutter/services.dart';
+import 'package:flutter/widgets.dart';
 import 'package:flutter_test/flutter_test.dart';
 
 import 'editable_text_tester.dart';
 import 'editable_text_utils.dart';
+import 'widgets_app_tester.dart';
 
 const TextStyle textStyle = TextStyle();
 const Color cursorColor = Color.fromARGB(0xFF, 0xFF, 0x00, 0x00);
+const Color _blue = Color(0xff2196f3);
+const Color _grey = Color(0xff9e9e9e);
+const Color _textFieldBackgroundCursorColor = Color(0xff999999);
+const Color _black87 = Color(0xdd000000);
+// These mirror the platform-specific titleMedium color and font-family layer
+// from Typography.material2018(). Leave geometry such as fontSize to the
+// surrounding text style; the cursor goldens rely on that inherited geometry.
+const TextStyle _materialTitleMediumStyle = TextStyle(
+  fontFamily: 'Roboto',
+  color: _black87,
+  decoration: TextDecoration.none,
+);
+const TextStyle _cupertinoTitleMediumStyle = TextStyle(
+  fontFamily: 'CupertinoSystemText',
+  color: _black87,
+  decoration: TextDecoration.none,
+);
+
+Widget _pasteOnlyContextMenuBuilder(BuildContext context, EditableTextState editableTextState) {
+  return GestureDetector(
+    onTap: () async {
+      await editableTextState.pasteText(SelectionChangedCause.toolbar);
+    },
+    child: const Text('Paste'),
+  );
+}
 
 void main() {
   late TextEditingController controller;
@@ -49,7 +76,7 @@
         child: Directionality(
           textDirection: TextDirection.ltr,
           child: EditableText(
-            backgroundCursorColor: Colors.grey,
+            backgroundCursorColor: _grey,
             controller: controller,
             focusNode: focusNode,
             style: textStyle,
@@ -73,17 +100,18 @@
     final editableTextKey = GlobalKey<EditableTextState>();
 
     late String changedValue;
-    final Widget widget = MaterialApp(
+    final Widget widget = TestWidgetsApp(
       home: RepaintBoundary(
         key: const ValueKey<int>(1),
         child: EditableText(
-          backgroundCursorColor: Colors.grey,
+          backgroundCursorColor: _grey,
           key: editableTextKey,
           controller: controller,
           focusNode: focusNode,
-          style: Typography.material2018().black.titleMedium!,
-          cursorColor: Colors.blue,
-          selectionControls: materialTextSelectionControls,
+          style: _materialTitleMediumStyle,
+          cursorColor: _blue,
+          selectionControls: testTextSelectionHandleControls,
+          contextMenuBuilder: _pasteOnlyContextMenuBuilder,
           keyboardType: TextInputType.text,
           onChanged: (String value) {
             changedValue = value;
@@ -130,17 +158,18 @@
     final editableTextKey = GlobalKey<EditableTextState>();
 
     late String changedValue;
-    final Widget widget = MaterialApp(
+    final Widget widget = TestWidgetsApp(
       home: RepaintBoundary(
         key: const ValueKey<int>(1),
         child: EditableText(
-          backgroundCursorColor: Colors.grey,
+          backgroundCursorColor: _grey,
           key: editableTextKey,
           controller: controller,
           focusNode: focusNode,
-          style: Typography.material2018().black.titleMedium!,
-          cursorColor: Colors.blue,
-          selectionControls: materialTextSelectionControls,
+          style: _materialTitleMediumStyle,
+          cursorColor: _blue,
+          selectionControls: testTextSelectionHandleControls,
+          contextMenuBuilder: _pasteOnlyContextMenuBuilder,
           keyboardType: TextInputType.text,
           onChanged: (String value) {
             changedValue = value;
@@ -184,9 +213,7 @@
   });
 
   testWidgets('Cursor can animate', (WidgetTester tester) async {
-    await tester.pumpWidget(
-      const MaterialApp(home: Material(child: TestTextField(cursorOpacityAnimates: true))),
-    );
+    await tester.pumpWidget(const TestWidgetsApp(home: TestTextField(cursorOpacityAnimates: true)));
 
     final Finder textFinder = find.byType(TestTextField);
     await tester.tap(textFinder);
@@ -232,12 +259,10 @@
 
   testWidgets('Cursor is static when cursorOpacityAnimates is false', (WidgetTester tester) async {
     await tester.pumpWidget(
-      const MaterialApp(
-        home: Material(
-          child: TestTextField(
-            // cursorOpacityAnimates: false, default value.
-            maxLines: 3,
-          ),
+      const TestWidgetsApp(
+        home: TestTextField(
+          // cursorOpacityAnimates: false, default value.
+          maxLines: 3,
         ),
       ),
     );
@@ -258,14 +283,12 @@
     'Cursor does not animate when EditableText.debugDeterministicCursor and cursorOpacityAnimates are true',
     (WidgetTester tester) async {
       EditableText.debugDeterministicCursor = true;
-      final defaultCursorColor = Color(ThemeData.fallback().colorScheme.primary.value);
-      final Widget widget = MaterialApp(
-        home: Material(
-          child: TestTextField(
-            maxLines: 3,
-            cursorColor: defaultCursorColor,
-            cursorOpacityAnimates: true,
-          ),
+      const Color defaultCursorColor = _blue;
+      const Widget widget = TestWidgetsApp(
+        home: TestTextField(
+          maxLines: 3,
+          cursorColor: defaultCursorColor,
+          cursorOpacityAnimates: true,
         ),
       );
       await tester.pumpWidget(widget);
@@ -297,92 +320,88 @@
     },
   );
 
-  testWidgets(
-    'Cursor animation restarts when it is moved using keys on desktop',
-    (WidgetTester tester) async {
-      debugDefaultTargetPlatformOverride = TargetPlatform.macOS;
+  testWidgets('Cursor animation restarts when it is moved using keys on desktop', (
+    WidgetTester tester,
+  ) async {
+    debugDefaultTargetPlatformOverride = TargetPlatform.macOS;
 
-      const testText = 'Some text long enough to move the cursor around';
-      controller.text = testText;
+    const testText = 'Some text long enough to move the cursor around';
+    controller.text = testText;
 
-      final Widget widget = MaterialApp(
-        home: EditableText(
-          controller: controller,
-          focusNode: focusNode,
-          style: const TextStyle(fontSize: 20.0),
-          cursorColor: Colors.blue,
-          backgroundCursorColor: Colors.grey,
-          selectionControls: materialTextSelectionControls,
-          keyboardType: TextInputType.text,
-          textAlign: TextAlign.left,
-        ),
-      );
-      await tester.pumpWidget(widget);
+    final Widget widget = TestWidgetsApp(
+      home: EditableText(
+        controller: controller,
+        focusNode: focusNode,
+        style: const TextStyle(fontSize: 20.0),
+        cursorColor: _blue,
+        backgroundCursorColor: _grey,
+        selectionControls: testTextSelectionHandleControls,
+        keyboardType: TextInputType.text,
+        textAlign: TextAlign.left,
+      ),
+    );
+    await tester.pumpWidget(widget);
 
-      await tester.tap(find.byType(EditableText));
-      await tester.pump();
+    await tester.tap(find.byType(EditableText));
+    await tester.pump();
 
-      final EditableTextState editableTextState = tester.firstState(find.byType(EditableText));
-      final RenderEditable renderEditable = editableTextState.renderEditable;
+    final EditableTextState editableTextState = tester.firstState(find.byType(EditableText));
+    final RenderEditable renderEditable = editableTextState.renderEditable;
 
-      await tester.pump();
-      expect(renderEditable.cursorColor!.alpha, 255);
-      expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
+    await tester.pump();
+    expect(renderEditable.cursorColor!.alpha, 255);
+    expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
 
-      // Android cursor goes from exactly on to exactly off on the 500ms dot.
-      await tester.pump(const Duration(milliseconds: 499));
-      expect(renderEditable.cursorColor!.alpha, 255);
-      expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
+    // Android cursor goes from exactly on to exactly off on the 500ms dot.
+    await tester.pump(const Duration(milliseconds: 499));
+    expect(renderEditable.cursorColor!.alpha, 255);
+    expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
 
-      await tester.sendKeyDownEvent(LogicalKeyboardKey.arrowLeft);
-      await tester.pump();
-      await tester.sendKeyUpEvent(LogicalKeyboardKey.arrowLeft);
+    await tester.sendKeyDownEvent(LogicalKeyboardKey.arrowLeft);
+    await tester.pump();
+    await tester.sendKeyUpEvent(LogicalKeyboardKey.arrowLeft);
 
-      await tester.pump();
-      expect(renderEditable.cursorColor!.alpha, 255);
-      expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
+    await tester.pump();
+    expect(renderEditable.cursorColor!.alpha, 255);
+    expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
 
-      await tester.pump(const Duration(milliseconds: 200));
-      expect(renderEditable.cursorColor!.alpha, 255);
-      expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
+    await tester.pump(const Duration(milliseconds: 200));
+    expect(renderEditable.cursorColor!.alpha, 255);
+    expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
 
-      await tester.pump(const Duration(milliseconds: 299));
-      expect(renderEditable.cursorColor!.alpha, 255);
-      expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
+    await tester.pump(const Duration(milliseconds: 299));
+    expect(renderEditable.cursorColor!.alpha, 255);
+    expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
 
-      await tester.sendKeyDownEvent(LogicalKeyboardKey.arrowRight);
-      await tester.pump();
-      await tester.sendKeyUpEvent(LogicalKeyboardKey.arrowRight);
-      await tester.pump();
-      await tester.sendKeyDownEvent(LogicalKeyboardKey.arrowRight);
-      await tester.pump();
-      await tester.sendKeyUpEvent(LogicalKeyboardKey.arrowRight);
+    await tester.sendKeyDownEvent(LogicalKeyboardKey.arrowRight);
+    await tester.pump();
+    await tester.sendKeyUpEvent(LogicalKeyboardKey.arrowRight);
+    await tester.pump();
+    await tester.sendKeyDownEvent(LogicalKeyboardKey.arrowRight);
+    await tester.pump();
+    await tester.sendKeyUpEvent(LogicalKeyboardKey.arrowRight);
 
-      await tester.pump();
-      expect(renderEditable.cursorColor!.alpha, 255);
-      expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
+    await tester.pump();
+    expect(renderEditable.cursorColor!.alpha, 255);
+    expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
 
-      await tester.pump(const Duration(milliseconds: 200));
-      expect(renderEditable.cursorColor!.alpha, 255);
-      expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
+    await tester.pump(const Duration(milliseconds: 200));
+    expect(renderEditable.cursorColor!.alpha, 255);
+    expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
 
-      await tester.pump(const Duration(milliseconds: 299));
-      expect(renderEditable.cursorColor!.alpha, 255);
-      expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
+    await tester.pump(const Duration(milliseconds: 299));
+    expect(renderEditable.cursorColor!.alpha, 255);
+    expect(renderEditable, paints..rect(color: const Color(0xff2196f3)));
 
-      await tester.pump(const Duration(milliseconds: 1));
-      expect(renderEditable.cursorColor!.alpha, 0);
-      expect(renderEditable, paintsExactlyCountTimes(#drawRect, 0));
+    await tester.pump(const Duration(milliseconds: 1));
+    expect(renderEditable.cursorColor!.alpha, 0);
+    expect(renderEditable, paintsExactlyCountTimes(#drawRect, 0));
 
-      debugDefaultTargetPlatformOverride = null;
-    },
-    variant: KeySimulatorTransitModeVariant.all(),
-  );
+    debugDefaultTargetPlatformOverride = null;
+  }, variant: KeySimulatorTransitModeVariant.all());
 
   testWidgets('Cursor does not show when showCursor set to false', (WidgetTester tester) async {
-    const Widget widget = MaterialApp(
-      home: Material(child: TestTextField(showCursor: false, maxLines: 3)),
-    );
+    const Widget widget = TestWidgetsApp(home: TestTextField(showCursor: false, maxLines: 3));
     await tester.pumpWidget(widget);
 
     await tester.tap(find.byType(TestTextField));
@@ -405,9 +424,7 @@
   testWidgets('Cursor does not show when not focused', (WidgetTester tester) async {
     // Regression test for https://github.com/flutter/flutter/issues/106512 .
     await tester.pumpWidget(
-      MaterialApp(
-        home: Material(child: TestTextField(focusNode: focusNode, autofocus: true)),
-      ),
+      TestWidgetsApp(home: TestTextField(focusNode: focusNode, autofocus: true)),
     );
     assert(focusNode.hasFocus);
     final EditableTextState editableTextState = tester.firstState(find.byType(EditableText));
@@ -445,7 +462,7 @@
             node: focusScopeNode,
             autofocus: true,
             child: EditableText(
-              backgroundCursorColor: Colors.grey,
+              backgroundCursorColor: _grey,
               controller: controller,
               focusNode: focusNode,
               style: textStyle,
@@ -553,7 +570,7 @@
             node: focusScopeNode,
             autofocus: true,
             child: EditableText(
-              backgroundCursorColor: Colors.grey,
+              backgroundCursorColor: _grey,
               controller: controller,
               focusNode: focusNode,
               style: textStyle,
@@ -609,7 +626,7 @@
             node: focusScopeNode,
             autofocus: true,
             child: EditableText(
-              backgroundCursorColor: Colors.grey,
+              backgroundCursorColor: _grey,
               controller: controller,
               focusNode: focusNode,
               style: textStyle,
@@ -656,7 +673,7 @@
             node: focusScopeNode,
             autofocus: true,
             child: EditableText(
-              backgroundCursorColor: Colors.grey,
+              backgroundCursorColor: _grey,
               controller: controller,
               focusNode: focusNode,
               style: textStyle,
@@ -736,7 +753,7 @@
           textDirection: TextDirection.ltr,
           child: EditableText(
             key: key,
-            backgroundCursorColor: Colors.grey,
+            backgroundCursorColor: _grey,
             // Use animation controller to animate cursor blink for testing.
             cursorOpacityAnimates: true,
             controller: controller,
@@ -786,7 +803,7 @@
             node: focusScopeNode,
             autofocus: true,
             child: EditableText(
-              backgroundCursorColor: Colors.grey,
+              backgroundCursorColor: _grey,
               controller: controller,
               focusNode: focusNode,
               style: textStyle,
@@ -854,7 +871,7 @@
             node: focusScopeNode,
             autofocus: true,
             child: EditableText(
-              backgroundCursorColor: Colors.grey,
+              backgroundCursorColor: _grey,
               controller: controller,
               focusNode: focusNode,
               autofocus: true,
@@ -874,17 +891,21 @@
   testWidgets(
     'Floating cursor is painted',
     (WidgetTester tester) async {
-      const textStyle = TextStyle();
+      const textStyle = TextStyle(fontFamily: 'Roboto', fontSize: 16.0);
       const text = 'hello world this is fun and cool and awesome!';
       controller.text = text;
 
       await tester.pumpWidget(
-        MaterialApp(
-          theme: ThemeData(useMaterial3: false),
+        TestWidgetsApp(
           home: Padding(
             padding: const EdgeInsets.only(top: 0.25),
-            child: Material(
-              child: TextField(controller: controller, focusNode: focusNode, style: textStyle),
+            child: EditableText(
+              controller: controller,
+              focusNode: focusNode,
+              style: textStyle,
+              cursorColor: _blue,
+              cursorRadius: const Radius.circular(2.0),
+              backgroundCursorColor: _textFieldBackgroundCursorColor,
             ),
           ),
         ),
@@ -900,16 +921,14 @@
       );
       await tester.pump();
 
+      // TestWidgetsApp leaves the EditableText origin on whole pixels instead
+      // of inheriting Material's fractional text field offset, so the odd-width
+      // floating cursor is centered on half-pixel x values.
       expect(
         editable,
         paints..rrect(
           rrect: RRect.fromRectAndRadius(
-            const Rect.fromLTRB(
-              463.8333435058594,
-              -0.916666666666668,
-              466.8333435058594,
-              19.083333969116211,
-            ),
+            const Rect.fromLTRB(464.5, -0.916666666666668, 467.5, 19.083333969116211),
             const Radius.circular(1.0),
           ),
           color: const Color(0xbf2196f3),
@@ -928,7 +947,7 @@
         find.byType(EditableText),
         paints..rrect(
           rrect: RRect.fromRectAndRadius(
-            const Rect.fromLTWH(193.83334350585938, -0.916666666666668, 3.0, 20.0),
+            const Rect.fromLTWH(194.5, -0.916666666666668, 3.0, 20.0),
             const Radius.circular(1.0),
           ),
           color: const Color(0xbf2196f3),
@@ -945,10 +964,10 @@
         paints
           ..rrect(
             rrect: RRect.fromRectAndRadius(
-              const Rect.fromLTWH(719.3333333333333, -0.9166666666666679, 2.0, 18.0),
+              const Rect.fromLTWH(720.0, -0.9166666666666679, 2.0, 18.0),
               const Radius.circular(2.0),
             ),
-            color: const Color(0xff999999),
+            color: _textFieldBackgroundCursorColor,
           )
           ..rrect(
             rrect: RRect.fromRectAndRadius(
@@ -978,20 +997,21 @@
       final editableTextKey = GlobalKey<EditableTextState>();
 
       late String changedValue;
-      final Widget widget = MaterialApp(
+      final Widget widget = TestWidgetsApp(
         home: RepaintBoundary(
           key: const ValueKey<int>(1),
           child: Column(
             children: <Widget>[
               const SizedBox(width: 10, height: 10),
               EditableText(
-                backgroundCursorColor: Colors.grey,
+                backgroundCursorColor: _grey,
                 key: editableTextKey,
                 controller: controller,
                 focusNode: focusNode,
-                style: Typography.material2018(platform: TargetPlatform.iOS).black.titleMedium!,
-                cursorColor: Colors.blue,
-                selectionControls: materialTextSelectionControls,
+                style: _cupertinoTitleMediumStyle,
+                cursorColor: _blue,
+                selectionControls: testTextSelectionHandleControls,
+                contextMenuBuilder: _pasteOnlyContextMenuBuilder,
                 keyboardType: TextInputType.text,
                 onChanged: (String value) {
                   changedValue = value;
@@ -1048,20 +1068,21 @@
       final editableTextKey = GlobalKey<EditableTextState>();
 
       late String changedValue;
-      final Widget widget = MaterialApp(
+      final Widget widget = TestWidgetsApp(
         home: RepaintBoundary(
           key: const ValueKey<int>(1),
           child: Column(
             children: <Widget>[
               const SizedBox(width: 10, height: 10),
               EditableText(
-                backgroundCursorColor: Colors.grey,
+                backgroundCursorColor: _grey,
                 key: editableTextKey,
                 controller: controller,
                 focusNode: focusNode,
-                style: Typography.material2018(platform: TargetPlatform.iOS).black.titleMedium!,
-                cursorColor: Colors.blue,
-                selectionControls: materialTextSelectionControls,
+                style: _cupertinoTitleMediumStyle,
+                cursorColor: _blue,
+                selectionControls: testTextSelectionHandleControls,
+                contextMenuBuilder: _pasteOnlyContextMenuBuilder,
                 keyboardType: TextInputType.text,
                 onChanged: (String value) {
                   changedValue = value;
@@ -1122,9 +1143,9 @@
     });
 
     await tester.pumpWidget(
-      MaterialApp(
+      TestWidgetsApp(
         home: EditableText(
-          backgroundCursorColor: Colors.grey,
+          backgroundCursorColor: _grey,
           controller: controller,
           obscureText: true,
           focusNode: focusNode,
@@ -1168,7 +1189,7 @@
 
     final Widget widget = EditableText(
       autofocus: true,
-      backgroundCursorColor: Colors.grey,
+      backgroundCursorColor: _grey,
       controller: controller,
       focusNode: focusNode,
       style: const TextStyle(fontSize: 20),
@@ -1177,7 +1198,7 @@
       cursorColor: cursorColor,
       maxLines: null,
     );
-    await tester.pumpWidget(MaterialApp(home: widget));
+    await tester.pumpWidget(TestWidgetsApp(home: widget));
 
     final EditableTextState editableTextState = tester.firstState(find.byWidget(widget));
     final RenderEditable renderEditable = editableTextState.renderEditable;
@@ -1217,7 +1238,7 @@
 
     final Widget widget = EditableText(
       autofocus: true,
-      backgroundCursorColor: Colors.grey,
+      backgroundCursorColor: _grey,
       controller: controller,
       focusNode: focusNode,
       style: const TextStyle(fontSize: 17),
@@ -1228,7 +1249,7 @@
       cursorHeight: 17.0,
       maxLines: null,
     );
-    await tester.pumpWidget(MaterialApp(home: widget));
+    await tester.pumpWidget(TestWidgetsApp(home: widget));
 
     final EditableTextState editableTextState = tester.firstState(find.byWidget(widget));
     final Rect editableTextRect = tester.getRect(find.byWidget(widget));
@@ -1261,7 +1282,7 @@
 
       final Widget widget = EditableText(
         autofocus: true,
-        backgroundCursorColor: Colors.grey,
+        backgroundCursorColor: _grey,
         controller: controller,
         focusNode: focusNode,
         style: const TextStyle(fontSize: fontSize),
@@ -1270,7 +1291,7 @@
         cursorHeight: cursorHeight,
         cursorWidth: cursorWidth,
       );
-      await tester.pumpWidget(MaterialApp(home: widget));
+      await tester.pumpWidget(TestWidgetsApp(home: widget));
 
       final EditableTextState editableTextState = tester.firstState(find.byWidget(widget));
       final RenderEditable renderEditable = editableTextState.renderEditable;
@@ -1304,7 +1325,7 @@
 
       final Widget widget = EditableText(
         autofocus: true,
-        backgroundCursorColor: Colors.grey,
+        backgroundCursorColor: _grey,
         controller: controller,
         focusNode: focusNode,
         style: const TextStyle(fontSize: fontSize),
@@ -1313,7 +1334,7 @@
         cursorHeight: cursorHeight,
         cursorWidth: cursorWidth,
       );
-      await tester.pumpWidget(MaterialApp(home: widget));
+      await tester.pumpWidget(TestWidgetsApp(home: widget));
 
       final EditableTextState editableTextState = tester.firstState(find.byWidget(widget));
       final RenderEditable renderEditable = editableTextState.renderEditable;
@@ -1348,7 +1369,7 @@
 
     final Widget widget = EditableText(
       autofocus: true,
-      backgroundCursorColor: Colors.grey,
+      backgroundCursorColor: _grey,
       controller: controller,
       focusNode: focusNode,
       style: const TextStyle(fontSize: 20),
@@ -1357,7 +1378,7 @@
       cursorColor: cursorColor,
       maxLines: null,
     );
-    await tester.pumpWidget(MaterialApp(home: widget));
+    await tester.pumpWidget(TestWidgetsApp(home: widget));
 
     final EditableTextState editableTextState = tester.firstState(find.byWidget(widget));
     final Rect editableTextRect = tester.getRect(find.byWidget(widget));
@@ -1389,15 +1410,15 @@
     controller.selection = const TextSelection.collapsed(offset: 0);
 
     await tester.pumpWidget(
-      MaterialApp(
+      TestWidgetsApp(
         home: EditableText(
           key: key,
           autofocus: true,
           controller: controller,
           focusNode: focusNode,
           style: textStyle,
-          cursorColor: Colors.blue,
-          backgroundCursorColor: Colors.grey,
+          cursorColor: _blue,
+          backgroundCursorColor: _grey,
           cursorOpacityAnimates: true,
           maxLines: 2,
         ),
