// 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. // Flutter code sample for [TextFormField]. import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; void main() => runApp(const MyApp()); class MyApp extends StatelessWidget { const MyApp({super.key}); static const String _title = 'Flutter Code Sample'; @override Widget build(BuildContext context) { return MaterialApp( theme: ThemeData( useMaterial3: true, iconButtonTheme: const IconButtonThemeData( style: ButtonStyle( foregroundColor: MaterialStatePropertyAll(Colors.blue), ), ), ), title: _title, home: const MyStatefulWidget(), ); } } class MyStatefulWidget extends StatefulWidget { const MyStatefulWidget({super.key}); @override State createState() => _MyStatefulWidgetState(); } class _MyStatefulWidgetState extends State { @override Widget build(BuildContext context) { return Material( child: Center( child: Shortcuts( shortcuts: const { // Pressing space in the field will now move to the next field. SingleActivator(LogicalKeyboardKey.space): NextFocusIntent(), }, child: FocusTraversalGroup( child: Form( autovalidateMode: AutovalidateMode.always, onChanged: () { Form.of(primaryFocus!.context!).save(); }, child: Wrap( children: List.generate(5, (int index) { return Padding( padding: const EdgeInsets.all(8.0), child: ConstrainedBox( constraints: BoxConstraints.tight(const Size(200, 50)), child: TextField( decoration: InputDecoration( errorText: 'error!', prefixIcon: BackButton(onPressed: () {}), suffixIcon: BackButton(onPressed: () {}), ), ), ), ); }), ), ), ), ), ), ); } }