forked from flutter/packages
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add more documentation for TextEditingController default constructor …
…(#143452) ## Description This PR adds more documentation for `TextEditingController(String text)` constructor and it adds one example. flutter/flutter#96245 was a first improvement to the documentation. flutter/flutter#79495 tried to hide the cursor when an invalid selection is set but it was reverted. flutter/flutter#123777 mitigated the issue of having a default invalid selection: it takes care of setting a proper selection when a text field is focused and its controller selection is not initialized. I will try changing the initial selection in another PR, but It will probably break several existing tests. ## Related Issue Fixes flutter/flutter#95978 ## Tests Adds 1 test for the new example.
- Loading branch information
Showing
3 changed files
with
101 additions
and
0 deletions.
There are no files selected for viewing
61 changes: 61 additions & 0 deletions
61
examples/api/lib/widgets/editable_text/text_editing_controller.1.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
// Copyright 2014 The Flutter Authors. 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:flutter/material.dart'; | ||
|
||
/// Flutter code sample for [TextEditingController]. | ||
void main() { | ||
runApp(const TextEditingControllerExampleApp()); | ||
} | ||
|
||
class TextEditingControllerExampleApp extends StatelessWidget { | ||
const TextEditingControllerExampleApp({super.key}); | ||
|
||
@override | ||
Widget build(BuildContext context) { | ||
return const MaterialApp( | ||
home: TextEditingControllerExample(), | ||
); | ||
} | ||
} | ||
|
||
class TextEditingControllerExample extends StatefulWidget { | ||
const TextEditingControllerExample({super.key}); | ||
|
||
@override | ||
State<TextEditingControllerExample> createState() => _TextEditingControllerExampleState(); | ||
} | ||
|
||
class _TextEditingControllerExampleState extends State<TextEditingControllerExample> { | ||
// Create a controller whose initial selection is empty (collapsed) and positioned | ||
// before the text (offset is 0). | ||
final TextEditingController _controller = TextEditingController.fromValue( | ||
const TextEditingValue( | ||
text: 'Flutter', | ||
selection: TextSelection.collapsed(offset: 0), | ||
), | ||
); | ||
|
||
@override | ||
void dispose() { | ||
_controller.dispose(); | ||
super.dispose(); | ||
} | ||
|
||
@override | ||
Widget build(BuildContext context) { | ||
return Scaffold( | ||
body: Container( | ||
alignment: Alignment.center, | ||
padding: const EdgeInsets.all(16.0), | ||
child: TextField( | ||
controller: _controller, | ||
autofocus: true, | ||
decoration: const InputDecoration(filled: true), | ||
), | ||
), | ||
); | ||
} | ||
} |
21 changes: 21 additions & 0 deletions
21
examples/api/test/widgets/editable_text/text_editing_controller.1_test.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
// Copyright 2014 The Flutter Authors. 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:flutter/material.dart'; | ||
import 'package:flutter_api_samples/widgets/editable_text/text_editing_controller.1.dart' as example; | ||
import 'package:flutter_test/flutter_test.dart'; | ||
|
||
void main() { | ||
testWidgets('Initial selection is collasped at offset 0', (WidgetTester tester) async { | ||
await tester.pumpWidget( | ||
const example.TextEditingControllerExampleApp(), | ||
); | ||
|
||
final EditableText editableText = tester.widget(find.byType(EditableText)); | ||
final TextEditingController controller = editableText.controller; | ||
|
||
expect(controller.text, 'Flutter'); | ||
expect(controller.selection, const TextSelection.collapsed(offset: 0)); | ||
}); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters