Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 文本字段输入后,颤振文本不会进一步更新_Flutter_Dart - Fatal编程技术网

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。好的,我明天试试,然后再打给你,谢谢你的帮助。