为什么文本域在flutter中不接受输入?

bwleehnv  于 2023-02-05  发布在  Flutter
关注(0)|答案(1)|浏览(166)

当我在TextField中输入时。如果两位数的和为真,它将调用reload()。之后,将生成两个随机数。但当我再次输入时,它不工作。我必须每次单击TextField进行输入。
我使用FocusNode来保持焦点,但它不工作。
文本字段

TextField(
                    focusNode: nd_input,
                    autofocus: true,
                    controller: input,
                    keyboardType: TextInputType.number,
                    textAlign: TextAlign.center,
                    onChanged: (value) {
                      fun_sum(value);
                      FocusScope.of(context).requestFocus(nd_input);
                      setState(() {

                      });
                    },

fun_sum函数

void fun_sum(var value){
int sum = num1 + num2;
print("Sum :${sum}");
if(sum == int.parse(value)){
  setState(() {
  input.text = "";
  reload();
  });
}

}
重载功能

void reload(){
field_one();
field_two();
setState(() {
});

}

kknvjkwl

kknvjkwl1#

我认为**setState()**函数会给您带来问题。请尝试以下操作:

您的文本域

TextField(
  focusNode: nd_input,
  autofocus: true,
  controller: input,
  keyboardType: TextInputType.number,
  textAlign: TextAlign.center,
  onChanged: (value) {
    setState(() {
      fun_sum(value);
      FocusScope.of(context).requestFocus(nd_input);
    });
  },

函数函数函数

void fun_sum(var value){
int sum = num1 + num2;
print("Sum :${sum}");
if(sum == int.parse(value)){
  input.text = "";
  reload();
}

重新加载函数

void reload(){
  field_one();
  field_two();
}

你不需要递归地调用setState()。如果有帮助,请告诉我。

相关问题