修改main.dart
import 'package:flutter/material.dart';
import 'package:nihao_flutter/demo/form_demo.dart';
import 'package:nihao_flutter/demo/navigator_demo.dart';
import 'package:nihao_flutter/demo/home_demo.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) { // TODO: implement buildreturn MaterialApp(debugShowCheckedModeBanner: false,// home: NavigatorDemo(),initialRoute: '/form',routes: {'/':(context)=>HomeDemo(), '/form':(context)=>FormDemo(), },theme: ThemeData(primarySwatch: Colors.yellow,highlightColor: Color.fromRGBO(255, 255, 255, 0.5),splashColor: Colors.red),);}
}
新建form_demo.dart
import 'package:flutter/material.dart';class FormDemo extends StatelessWidget {@overrideWidget build(BuildContext context) {return Scaffold(body: Theme(data: Theme.of(context).copyWith(primaryColor: Colors.black,),child: Container(padding: EdgeInsets.all(16.0),child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [RegisterForm(),],),),),);}
}class RegisterForm extends StatefulWidget {@overrideRegisterFormState createState() => RegisterFormState();
}class RegisterFormState extends State {final registerFormKey = GlobalKey();String username, password;bool _autovalidate=false;void submintRegisterForm() {if(registerFormKey.currentState.validate()){registerFormKey.currentState.save();debugPrint('username $username');debugPrint('password $password');Scaffold.of(context).showSnackBar(SnackBar(content: Text('Registering...'),));}else{setState(() {_autovalidate=true;});}}String validateUsername(value) {if (value.isEmpty) {return "Username os required.";}return null;}String validatePassword(value) {if (value.isEmpty) {return "Password is required.";}return null;}@overrideWidget build(BuildContext context) {return Form(key: registerFormKey,child: Column(children: [TextFormField(decoration: InputDecoration(labelText: 'Username',helperText: 'please input Username',),onSaved: (value) {username = value;},validator: validateUsername,autovalidate: _autovalidate,),TextFormField(obscureText: true,decoration: InputDecoration(labelText: 'Password',helperText: 'please inputPassword',),onSaved: (value) {password = value;},validator: validatePassword,autovalidate: _autovalidate,),SizedBox(height: 32.0,),Container(width: double.infinity,child: RaisedButton(color: Colors.green,child: Text('Register', style: TextStyle(color: Colors.white)),elevation: 0.0,onPressed: submintRegisterForm,),),],),);}
}class ThemeDemo extends StatelessWidget {@overrideWidget build(BuildContext context) {return Container(color: Theme.of(context).splashColor,);}
}class TextFieldDemo extends StatefulWidget {@overrideState createState() {// TODO: implement createStatereturn TextFieldDemoState();}
}class TextFieldDemoState extends State {final textEditingController = TextEditingController();@overridevoid dispose() {textEditingController.dispose();super.dispose();}@overridevoid initState() {super.initState();// textEditingController.text='hi';textEditingController.addListener(() {debugPrint('input ${textEditingController.text}');});}@overrideWidget build(BuildContext context) {// TODO: implement buildreturn TextField(controller: textEditingController,// onChanged: (value){// debugPrint('input:$value');// },onSubmitted: (value) {debugPrint('submit:$value');},decoration: InputDecoration(icon: Icon(Icons.subject),labelText: 'Title',hintText: 'Enter the post title.',// border: InputBorder.none,// border: OutlineInputBorder(),filled: true,fillColor: Colors.green),);}
}
vscode f5运行看效果
android studio shift+f10