Flutter 文本字段输入后,颤振文本不会进一步更新
我有箭头按钮来增加或减少变量Flutter 文本字段输入后,颤振文本不会进一步更新,flutter,dart,Flutter,Dart,我有箭头按钮来增加或减少变量age,它可以很好地更新hintText,但是如果我使用TextField小部件来输入一个新值,它会很好地更新,但是在这之后,箭头按钮不再起作用来进一步改变hintText中的age值 但是,该值仍在后台更新,可以通过打印功能查看 下面是所用代码的简化版本: TextField( onChanged: (val) { setState(() { age = int.parse(val); });,
age
,它可以很好地更新hintText
,但是如果我使用TextField
小部件来输入一个新值,它会很好地更新,但是在这之后,箭头按钮不再起作用来进一步改变hintText
中的age值
但是,该值仍在后台更新,可以通过打印功能查看
下面是所用代码的简化版本:
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
,因此无法以这种方式更新?您需要的是更改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();
}
}
class SampleText扩展StatefulWidget{
@凌驾
_SampleTextState createState()=>_SampleTextState();
}
类_SampleTextState扩展状态{
TextEditingController _controller=TextEditingController();
@凌驾
无效处置(){
_controller.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
浮动操作按钮:浮动操作按钮(
子:图标(图标加上一个),
按:chngAge,
),
正文:中(
孩子:TextField(
控制器:_控制器,
键盘类型:TextInputType.number,
装饰:输入装饰(
边框:InputBorder.none,
hintStyle:TextStyle(
颜色:颜色(0xFF99999),fontWeight:fontWeight.bold),
),
),
),
);
}
void chngAge(){
_controller.text=(int.parse(_controller.text)+1.toString();
}
}
你可以在这里获得更多信息:你能发布完整的代码吗?@Muhammad Noman不,没有空间来存放散布在不同文件中的完整代码。这是所有必要的代码。您没有看到什么?在一个非常简单的示例中减少代码,我们可以运行并test@diegoveloper一个人想要完整的代码,现在你想要一个更简单的例子。我已经尽量简化了。它只是一个按钮和一个文本字段。不确定我还可以删除什么?让我看看,您分配age=val
;val是String,但在您使用的方法chngAge
中,是String还是int?您的文本字段中根本没有hintText
?您还需要hintStyle
吗?如果需要(不是必需的),您可以添加hintText
,或者删除hintStyle,hintText是一个提示字段接受哪种类型输入的文本(应该是常量)。因此,如果没有hintText,是否会有一个age
的值开始?TextEditingController可以以字符串值开始。。。文本编辑控制器(文本:“123”);好的,我明白了。所以事实上我可以不用hintText。好的,我明天试试,然后再打给你,谢谢你的帮助。