1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold( appBar: AppBar( title: Text("组件学习"), elevation: 10.0, centerTitle: true, ), body: InputDemo(), ), ); } }
class InputDemo extends StatefulWidget { @override _InputDemoState createState() => _InputDemoState(); }
class _InputDemoState extends State<InputDemo> { GlobalKey _key = GlobalKey<FormState>(); TextEditingController _username = TextEditingController(); TextEditingController _password = TextEditingController(); FocusNode _u = FocusNode(); FocusNode _p = FocusNode(); FocusScopeNode _focusScopeNode = FocusScopeNode();
@override void dispose(){ super.dispose(); _username.dispose(); _password.dispose(); _u.dispose(); _p.dispose(); if(_focusScopeNode != null) _focusScopeNode.dispose(); }
@override Widget build(BuildContext context) { return Form( key: _key, child: Column( children: [ TextFormField( autofocus: true, focusNode: _u, controller: _username, decoration: InputDecoration( prefixIcon: Icon(Icons.add), labelText: 'label', hintText: '请输入账号' ), validator: (v){ if(v==null || v.isEmpty){ return "账号必须输入"; } }, textInputAction: TextInputAction.next, onFieldSubmitted: (v){ print("回车"); }, ), SizedBox(height: 16), TextFormField( focusNode: _p, controller: _password, decoration: InputDecoration( prefixIcon: Icon(Icons.add), labelText: 'label', hintText: '请输入密码' ), validator: (v){ if(v==null || v.length < 5){ return "密码必须输入且长度大于5"; } }, textInputAction: TextInputAction.send, obscureText: true, ), SizedBox(height:16), RaisedButton( onPressed: (){ if(_focusScopeNode == null){ _focusScopeNode = FocusScope.of(context); } _focusScopeNode.requestFocus(_u); print((_key.currentState as FormState).validate()); }, child: Text("提交"), color:Colors.blue ) ], ), ); } }
|