TextFromField

TextFormField是继承了TextFiled,

TextFormField一般是放在Form里面使用,可以使用GlobalKey进行控制:

 

 

首先在类里面声明GlobalKey,如:

final globalKeyValue=GlobalKey<FormState>();

其次在Form里面加入 key:GlobalKey,如:

key: globalKeyValue,

再次在TextFormFiled里面定义onSave(){}和validate(){}

onSaved: (value){username=value;},
validator: validateUsername,
String validateUsername(value){
if(value.isEmpty){return 'Username is required';}else{return null;}
}

最后在使用下面这两句就直接调用了TextFormField内部定义的onSave(){}和validate(){}:

globalKeyValue.currentState.save();
globalKeyValue.currentState.validate();



附上一个示例:
import 'package:flutter/material.dart';

void main()=>runApp(MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}

class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
final globalKeyValue=GlobalKey<FormState>();
String username,password;
bool boolSwich=false;
String validateUsername(value){
if(value.isEmpty){return 'Username is required';}else{return null;}
}
String validatePassword(value){
if(value.isEmpty){return 'passWord is required';}else{return null;}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('FormDemo'),),
body: Form(
key: globalKeyValue,
child: Column(
children: <Widget>[
SizedBox(height: 5,),
TextFormField(
validator: validatePassword,
autovalidate: boolSwich,
onSaved: (value){username=value;},
decoration: InputDecoration(
contentPadding: EdgeInsets.all(5),
fillColor: Colors.orangeAccent,
filled: true,
labelText: '输入标签',
hintText: '输入用户名',
helperText: '',
),
),
SizedBox(height: 5,),
TextFormField(
obscureText: true,
validator: validateUsername,
autovalidate: boolSwich,
onSaved: (value){password=value;},
decoration: InputDecoration(
contentPadding: EdgeInsets.all(5),
fillColor: Colors.orangeAccent,
filled: true,
labelText: '输入标签',
hintText: '输入密码',
helperText: '',
),
),
Container(
padding: EdgeInsets.only(left: 18,right: 18),
width: double.infinity,
child: RaisedButton(
color: Colors.orangeAccent,
highlightColor: Colors.red,
child: Icon(Icons.save),
onPressed: (){
globalKeyValue.currentState.save();
globalKeyValue.currentState.validate();
debugPrint('username:$username');
debugPrint('password:$password');
boolSwich=true;
}
),
),
],
),
),
);
}
}
 

转载于:https://www.cnblogs.com/braveheart007/p/10843524.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值