请帮我回答我的两个问题。
第一个问题。为什么文本值消失了?@Praneeth修正的我添加了gif 请点击
我用了我的代码,
在我的小部件中,我调用了UsernameTextField类。小部件看起来如下,
小部件构建> WillPopScope > Scaffold > Form > ListView > children>容器(容器下面)--我还添加了
key: _scaffoldKey,和key: formKey,。
Container(
padding: EdgeInsets.all(16.0),
margin: EdgeInsets.only(top: 30.0),
child: UsernameTextField(),
),UsernameTextField()
class UsernameTextField extends StatefulWidget{
final usernameController = TextEditingController();
@override
State<StatefulWidget> createState() {
return UsernameTextFieldState(usernameController);
}
}
class UsernameTextFieldState extends State<UsernameTextField>{
final usernameController;
UsernameTextFieldState(this.usernameController);
@override
Widget build(BuildContext context) {
return AppTextField(
decoration: InputDecoration(
contentPadding: const EdgeInsets.all(20.0),
labelText: AppTranslations.of(context)
.text("loginpage_username"),
),
myController: usernameController,
textInputType: TextInputType.emailAddress
);
}
}AppTextField()类, --我在每个TextField Widget中都使用了这个类
class AppTextField extends StatelessWidget {
final InputDecoration decoration;
final myController;
final TextInputType textInputType;
AppTextField({
this.decoration,
this.myController,
this.textInputType
});
@override
Widget build(BuildContext context) {
return TextFormField(
controller: myController,
keyboardType: textInputType,
textAlign: TextAlign.left,
decoration: decoration
);}}第二个问题。如何获得textField值?
在我调用的按钮onPressed()方法中,我调用了validation方法,但是结果是null
usernameValidation(){
String username = UsernameTextField().usernameController.text;
print(username);
} 发布于 2019-06-06 06:49:00
首先,通过扩展为UsernameTextField类而不是StatelessWidget,将StatelessWidget类转换为重要类。然后你就可以从usernameController.text中得到价值
更新
class UsernameTextField extends StatefulWidget{
final usernameController = TextEditingController();
UsernameTextField(this.usernameController)
@override
State<StatefulWidget> createState() {
return UsernameTextFieldState(usernameController);
}
}
class UsernameTextFieldState extends State<UsernameTextField>{
@override
Widget build(BuildContext context) {
return AppTextField(
decoration: InputDecoration(
contentPadding: const EdgeInsets.all(20.0),
labelText: AppTranslations.of(context)
.text("loginpage_username"),
),
myController: widget.usernameController,
textInputType: TextInputType.emailAddress
);
}
}https://stackoverflow.com/questions/56471639
复制相似问题