| // 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 [TextField]. |
| |
| void main() => runApp(const TextFieldExampleApp()); |
| |
| class TextFieldExampleApp extends StatelessWidget { |
| const TextFieldExampleApp({super.key}); |
| |
| @override |
| Widget build(BuildContext context) { |
| return const MaterialApp( |
| home: TextFieldExample(), |
| ); |
| } |
| } |
| |
| class TextFieldExample extends StatefulWidget { |
| const TextFieldExample({super.key}); |
| |
| @override |
| State<TextFieldExample> createState() => _TextFieldExampleState(); |
| } |
| |
| class _TextFieldExampleState extends State<TextFieldExample> { |
| late TextEditingController _controller; |
| |
| @override |
| void initState() { |
| super.initState(); |
| _controller = TextEditingController(); |
| } |
| |
| @override |
| void dispose() { |
| _controller.dispose(); |
| super.dispose(); |
| } |
| |
| @override |
| Widget build(BuildContext context) { |
| return Scaffold( |
| body: Center( |
| child: TextField( |
| controller: _controller, |
| onSubmitted: (String value) async { |
| await showDialog<void>( |
| context: context, |
| builder: (BuildContext context) { |
| return AlertDialog( |
| title: const Text('Thanks!'), |
| content: Text('You typed "$value", which has length ${value.characters.length}.'), |
| actions: <Widget>[ |
| TextButton( |
| onPressed: () { |
| Navigator.pop(context); |
| }, |
| child: const Text('OK'), |
| ), |
| ], |
| ); |
| }, |
| ); |
| }, |
| ), |
| ), |
| ); |
| } |
| } |