[英]How to get a value from the buildTextField(a Extracted Widget) of TextField in flutter
我已经提取了一个小部件并在代码中多次使用它我被卡住同时从每个文本字段中获取一个值
我的自定义函数代码是这样的:
Widget buildTextField(
IconData icon, String hintText, bool isEmail, dynamic _valueoffield) {
return Padding(
padding: const EdgeInsets.only(bottom: 8.0),
child: TextField(
obscureText: hintText == "Password" ? _isHidden : false,
keyboardType: isEmail ? TextInputType.emailAddress : TextInputType.text,
onSubmitted: (_valueoffield) {},
decoration: InputDecoration(
prefixIcon: Icon(
icon,
color: Palette.iconColor,
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Palette.textColor1),
borderRadius: BorderRadius.all(Radius.circular(35.0)),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Palette.textColor1),
borderRadius: BorderRadius.all(Radius.circular(35.0)),
),
contentPadding: EdgeInsets.all(10),
hintText: hintText,
hintStyle: TextStyle(fontSize: 14, color: Palette.textColor1),
suffixIcon: hintText == 'Password'
? IconButton(
onPressed: _toggleVisibility,
icon: _isHidden
? Icon(Icons.visibility_off_outlined)
: Icon(Icons.visibility_outlined))
: null),
),
);
}
为 TextFields 使用控制器总是更好,所以不要像这样传递_valueoffield
传递一个 TextEditingController:
TextEditingController usernameController = TextEditingController();
TextEditingController passwordController = TextEditingController();
...
buildTextField(
....
usernameController,
)
buildTextField(
....
passwordController,
)
并获得这样的值
String username;
...
username = usernameController.text;
所以函数将是
Widget buildTextField(
IconData icon, String hintText, bool isEmail, TextEditingController controller) {
return Padding(
padding: const EdgeInsets.only(bottom: 8.0),
child: TextField(
obscureText: hintText == "Password" ? _isHidden : false,
keyboardType: isEmail ? TextInputType.emailAddress : TextInputType.text,
controller: controller,
decoration: InputDecoration(
prefixIcon: Icon(
icon,
color: Palette.iconColor,
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Palette.textColor1),
borderRadius: BorderRadius.all(Radius.circular(35.0)),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Palette.textColor1),
borderRadius: BorderRadius.all(Radius.circular(35.0)),
),
contentPadding: EdgeInsets.all(10),
hintText: hintText,
hintStyle: TextStyle(fontSize: 14, color: Palette.textColor1),
suffixIcon: hintText == 'Password'
? IconButton(
onPressed: _toggleVisibility,
icon: _isHidden
? Icon(Icons.visibility_off_outlined)
: Icon(Icons.visibility_outlined))
: null),
),
);
}
Form
和TextFormField
作为输入字段
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.