我有一个容器内包含两个TextField
。第一个被定义为TextInputType.text
,第二个被定义为TextInputType.number
。每当我切换焦点(从第一个到第二个或从第二个到第一个),失去焦点的TextField
也会失去其值。
奇怪的是,如果我将它们都定义为TextInputType.text
,那么两个文本框都可以正常工作,但如果我将其中一个设置为除TextInputType.text
外的任何类型,则两个文本框都会在失去焦点时丢失已输入的值。
非常恼人。我不知道为什么会发生这种情况。
这是小部件代码:
class LoginInput extends StatelessWidget {
final String hintText;
final IconData icon;
final String iconTag;
final TextEditingController controller;
final TextInputType inputType;
final bool obscureText;
LoginInput(this.hintText, this.icon, this.iconTag, this.controller,
this.inputType, this.obscureText);
@override
Widget build(BuildContext context) {
return new Column(children: <Widget>[
new Container(
height: 56.0,
child: new Material(
borderRadius: BorderRadius.all(Radius.circular(5.0)),
elevation: 0.0,
color: Colors.white,
child: new Container(
child: new ListTile(
leading: new Hero(
tag: iconTag, child: new Icon(icon, color: Colors.black)),
title: new TextField(
keyboardType: inputType,
obscureText: obscureText,
textInputAction: TextInputAction.send,
controller: controller,
decoration: new InputDecoration(
border: InputBorder.none,
hintText: hintText,
),
style: new TextStyle(
color: Colors.black,
fontSize: 18.0,
fontFamily: 'Caecilia',
fontWeight: FontWeight.w500),
),
)))),
new Divider(height: 0.0, color: Theme.of(context).dividerColor),
]);
}
}
这是它的名称:
final LoginInput nameField = new LoginInput("Full name", Icons.face, "leading_icon_name", new TextEditingController(), TextInputType.text,false);
final LoginInput birthField = new LoginInput("Birth date", Icons.date_range, "leading_icon_birth", new TextEditingController(), TextInputType.number, false);
nameField
和birthField
都放在同一列中。在失去焦点时,两者都能正常工作(值得到保留)。textInputAction
字段对我不可用,并且在https://docs.flutter.io/flutter/material/TextField-class.html中也没有找到它。 - Dinesh Balasubramanian