Revert "Handle setting TextEditingController text to null (#68638)"

This reverts commit 3217906efbda5fd1922b3e497bf745eabfe3f0c6.
diff --git a/packages/flutter/lib/src/material/text_form_field.dart b/packages/flutter/lib/src/material/text_form_field.dart
index 071f2d7..deb9a4e 100644
--- a/packages/flutter/lib/src/material/text_form_field.dart
+++ b/packages/flutter/lib/src/material/text_form_field.dart
@@ -340,14 +340,14 @@
     super.didChange(value);
 
     if (_effectiveController!.text != value)
-      _effectiveController!.text = value ?? '';
+      _effectiveController!.text = value;
   }
 
   @override
   void reset() {
     super.reset();
     setState(() {
-      _effectiveController!.text = widget.initialValue ?? '';
+      _effectiveController!.text = widget.initialValue;
     });
   }
 
diff --git a/packages/flutter/lib/src/services/text_input.dart b/packages/flutter/lib/src/services/text_input.dart
index dade8c5..d5d44ca 100644
--- a/packages/flutter/lib/src/services/text_input.dart
+++ b/packages/flutter/lib/src/services/text_input.dart
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+
 import 'dart:async';
 import 'dart:io' show Platform;
 import 'dart:ui' show
diff --git a/packages/flutter/lib/src/widgets/editable_text.dart b/packages/flutter/lib/src/widgets/editable_text.dart
index bda6cc5..78e6ecb 100644
--- a/packages/flutter/lib/src/widgets/editable_text.dart
+++ b/packages/flutter/lib/src/widgets/editable_text.dart
@@ -154,7 +154,7 @@
   /// [TextEditingController]; however, one should not also set [selection]
   /// in a separate statement. To change both the [text] and the [selection]
   /// change the controller's [value].
-  set text(String newText) {
+  set text(String? newText) {
     value = value.copyWith(
       text: newText,
       selection: const TextSelection.collapsed(offset: -1),
diff --git a/packages/flutter/test/material/text_form_field_test.dart b/packages/flutter/test/material/text_form_field_test.dart
index c2e12a0..02a7888 100644
--- a/packages/flutter/test/material/text_form_field_test.dart
+++ b/packages/flutter/test/material/text_form_field_test.dart
@@ -406,56 +406,6 @@
     expect(find.text('initialValue'), findsOneWidget);
   });
 
-  // Regression test for https://github.com/flutter/flutter/issues/34847.
-  testWidgets('didChange resets the text field\'s value to empty when passed null', (WidgetTester tester) async {
-    await tester.pumpWidget(
-        MaterialApp(
-          home: Material(
-            child: Center(
-              child: TextFormField(
-                initialValue: null,
-              ),
-            ),
-          ),
-        )
-    );
-
-    await tester.enterText(find.byType(TextFormField), 'changedValue');
-    await tester.pump();
-    expect(find.text('changedValue'), findsOneWidget);
-
-    final FormFieldState<String> state = tester.state<FormFieldState<String>>(find.byType(TextFormField));
-    state.didChange(null);
-
-    expect(find.text('changedValue'), findsNothing);
-    expect(find.text(''), findsOneWidget);
-  });
-
-  // Regression test for https://github.com/flutter/flutter/issues/34847.
-  testWidgets('reset resets the text field\'s value to empty when intialValue is null', (WidgetTester tester) async {
-    await tester.pumpWidget(
-        MaterialApp(
-          home: Material(
-            child: Center(
-              child: TextFormField(
-                initialValue: null,
-              ),
-            ),
-          ),
-        )
-    );
-
-    await tester.enterText(find.byType(TextFormField), 'changedValue');
-    await tester.pump();
-    expect(find.text('changedValue'), findsOneWidget);
-
-    final FormFieldState<String> state = tester.state<FormFieldState<String>>(find.byType(TextFormField));
-    state.reset();
-
-    expect(find.text('changedValue'), findsNothing);
-    expect(find.text(''), findsOneWidget);
-  });
-
   // Regression test for https://github.com/flutter/flutter/issues/54472.
   testWidgets('didChange changes text fields value', (WidgetTester tester) async {
     await tester.pumpWidget(
diff --git a/packages/flutter/test/widgets/editable_text_test.dart b/packages/flutter/test/widgets/editable_text_test.dart
index 659fd1b..5fabb27 100644
--- a/packages/flutter/test/widgets/editable_text_test.dart
+++ b/packages/flutter/test/widgets/editable_text_test.dart
@@ -5566,114 +5566,77 @@
     expect(focusNode.hasFocus, false);
   });
 
-  group('TextEditingController', () {
-    testWidgets('TextEditingController.text set to empty string clears field', (WidgetTester tester) async {
-      final TextEditingController controller = TextEditingController();
-      await tester.pumpWidget(
-        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) { },
-                  ),
-                ),
-              ),
-            ),
-          ),
-        ),
-      );
-
-      controller.text = '...';
-      await tester.pump();
-      expect(find.text('...'), findsOneWidget);
-
-      controller.text = '';
-      await tester.pump();
-      expect(find.text('...'), findsNothing);
+  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();
 
-    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) { },
-                      ),
+    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,
-        }),
+            ),
+          );
+        },
       );
-    });
+    }
+
+    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 {