我有箭头按钮来增加或减少变量
age
,该变量可以很好地更新hintText
,但是如果我使用TextField
小部件输入新值,它只会更新可以,但是之后箭头按钮不再起作用以进一步更改hintText
中的年龄值。
但是,该值仍在幕后进行更新,并且可以使用print
函数进行查看。
这是所使用代码的简化版本:
TextField(
onChanged: (val) {
setState(() {
age = int.parse(val);
});,
keyboardType: TextInputType.number,
decoration: InputDecoration(
border: InputBorder.none,
hintText: age.toString(),
hintStyle: TextStyle(
color: Color(0xFF999999), fontWeight: FontWeight.bold),
),
)
Container(
child: RawMaterialButton(
onPressed: chngAge,
)
void chngAge() {
setState(() {
age++;
});
}
我想知道在将某些文本输入到文本字段后,它是否不再hintText
,因此无法以这种方式更新?
答案 0 :(得分:2)
您需要更改TextField
而不是hint
值的数据,因为当您在TextField
中写入一些文本时,提示消失了。
这是我做的一个例子:
class SampleText extends StatefulWidget {
@override
_SampleTextState createState() => _SampleTextState();
}
class _SampleTextState extends State<SampleText> {
TextEditingController _controller = TextEditingController();
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
child: Icon(Icons.plus_one),
onPressed: chngAge,
),
body: Center(
child: TextField(
controller: _controller,
keyboardType: TextInputType.number,
decoration: InputDecoration(
border: InputBorder.none,
hintStyle: TextStyle(
color: Color(0xFF999999), fontWeight: FontWeight.bold),
),
),
),
);
}
void chngAge() {
_controller.text = (int.parse(_controller.text) + 1).toString();
}
}
您可以在此处获取更多信息:https://flutter.dev/docs/cookbook/forms/retrieve-input