在Flutter中更新文本小部件

时间:2020-05-26 10:55:52

标签: flutter dart

我是Flutter的新手,我遇到一个问题,因为我想使用从numbers()函数传递的值更新Text小部件。

问题在于,当我按下按钮时,“文本”中的值在屏幕上不会更改,但在控制台中会更改。

class _HomeState extends State<Home> {


int n = 10;

  @override
  Widget build(BuildContext context) {
    return Scaffold(

  backgroundColor: Colors.deepPurpleAccent,
  body: Center(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [

        Text(n.toString()),

        RaisedButton(
          onPressed: (){
            n += numbers();
            print(n.toString());
          },
        ),
      ],
    ),
  ),
);
  }
}
int numbers (){

  List<int> numbersList = List(1);

  numbersList[0] = 30;

  int n1 = numbersList[0];

  return n1;

  print(numbersList[0].toString());
}

3 个答案:

答案 0 :(得分:1)

这是可以预期的,因为在任何时候您都想“刷新”屏幕时,都必须为要更新的小部件调用setState()。因此,您要做的就是在onPressed函数中执行以下操作:

setState(){
   n += numbers();
}
print(n.toString());

您可以阅读有关有状态窗口小部件和setState here

的更多信息。

答案 1 :(得分:1)

如何更改它

GRUB_TIMEOUT

答案 2 :(得分:1)

如果要更新UI,则应在flutter中调用setState((){});方法。此方法在StatefulWidget中可用

您应该以以下方式实施

class _HomeState extends State<Home> {
  int n = 10;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.deepPurpleAccent,
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(n.toString()),
            RaisedButton(
              onPressed: () {
                setState(() {
                  n += numbers();
                });
              },
            ),
          ],
        ),
      ),
    );
  }
}

int numbers() {
  List<int> numbersList = List(1);

  numbersList[0] = 30;

  int n1 = numbersList[0];

  return n1;
}
相关问题