Revert "change TextEditingController.clear() behavior (#68775)" (#68920)

This reverts commit 95909c2a04ef62cc72aab61ac26157b8a8ad7a20.
diff --git a/packages/flutter/lib/src/widgets/editable_text.dart b/packages/flutter/lib/src/widgets/editable_text.dart
index c52b54a..fda9b9d 100644
--- a/packages/flutter/lib/src/widgets/editable_text.dart
+++ b/packages/flutter/lib/src/widgets/editable_text.dart
@@ -230,14 +230,14 @@
   /// Set the [value] to empty.
   ///
   /// After calling this function, [text] will be the empty string and the
-  /// selection will be collapsed at zero offset.
+  /// selection will be invalid.
   ///
   /// Calling this will notify all the listeners of this [TextEditingController]
   /// that they need to update (it calls [notifyListeners]). For this reason,
   /// this method should only be called between frames, e.g. in response to user
   /// actions, not during the build, layout, or paint phases.
   void clear() {
-    value = const TextEditingValue(selection: TextSelection.collapsed(offset: 0));
+    value = TextEditingValue.empty;
   }
 
   /// Set the composing region to an empty range.
diff --git a/packages/flutter/test/widgets/editable_text_test.dart b/packages/flutter/test/widgets/editable_text_test.dart
index f7ed48f..9c7b2f1 100644
--- a/packages/flutter/test/widgets/editable_text_test.dart
+++ b/packages/flutter/test/widgets/editable_text_test.dart
@@ -5391,79 +5391,6 @@
     expect(focusNode.hasFocus, false);
   });
 
-  testWidgets('TextEditingController.clear() behavior test', (WidgetTester tester) async {
-    // Regression test for https://github.com/flutter/flutter/issues/66316
-    final List<MethodCall> log = <MethodCall>[];
-    SystemChannels.textInput.setMockMethodCallHandler((MethodCall methodCall) async {
-      log.add(methodCall);
-    });
-    final TextEditingController controller = TextEditingController();
-
-    final FocusNode focusNode = FocusNode(debugLabel: 'EditableText Focus Node');
-    Widget builder() {
-      return StatefulBuilder(
-        builder: (BuildContext context, StateSetter setter) {
-          return MaterialApp(
-            home: MediaQuery(
-              data: const MediaQueryData(devicePixelRatio: 1.0),
-              child: Directionality(
-                textDirection: TextDirection.ltr,
-                child: Center(
-                  child: Material(
-                    child: EditableText(
-                      controller: controller,
-                      focusNode: focusNode,
-                      style: textStyle,
-                      cursorColor: Colors.red,
-                      backgroundCursorColor: Colors.red,
-                      keyboardType: TextInputType.multiline,
-                      onChanged: (String value) { },
-                    ),
-                  ),
-                ),
-              ),
-            ),
-          );
-        },
-      );
-    }
-
-    await tester.pumpWidget(builder());
-    await tester.tap(find.byType(EditableText));
-    await tester.pump();
-
-    // The keyboard is shown after tap the EditableText.
-    expect(focusNode.hasFocus, true);
-
-    log.clear();
-
-    final EditableTextState state = tester.firstState(find.byType(EditableText));
-
-    state.updateEditingValue(const TextEditingValue(
-      text: 'a',
-    ));
-    await tester.pump();
-
-    // Nothing called when only the remote changes.
-    expect(log.length, 0);
-
-    controller.clear();
-
-    expect(log.length, 1);
-    expect(
-      log[0],
-      isMethodCall('TextInput.setEditingState', arguments: <String, dynamic>{
-        'text': '',
-        'selectionBase': 0,
-        'selectionExtent': 0,
-        'selectionAffinity': 'TextAffinity.downstream',
-        'selectionIsDirectional': false,
-        'composingBase': -1,
-        'composingExtent': -1,
-      }),
-    );
-  });
-
   testWidgets('autofocus:true on first frame does not throw', (WidgetTester tester) async {
     final TextEditingController controller = TextEditingController(text: testText);
     controller.selection = const TextSelection(