setState将不会重建

时间:2020-02-14 13:54:59

标签: flutter

这是有状态窗口小部件的构建方法。 当我单击按钮时,我希望它最多可以计数10个。它只会在数字达到10时重建。为什么会这样,我该怎么解决?

int number = 0;
@override
Widget build(BuildContext context) {
    return Scaffold(
        body: RaisedButton(
            onPressed: () {
                while(number < 10) {
                    setState(() {
                        number = number += 1;
                    });
                    sleep(Duration(milliseconds: 100));
                }
            },
            child: Text(number.toString()),
        ),
    );
}

1 个答案:

答案 0 :(得分:1)

您可以通过使用Future来实现。

int number = 0;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: RaisedButton(
          onPressed: () async {
            while (number < 10) {
              setState(() {
                number = number += 1;
              });
              await Future.delayed(Duration(milliseconds: 100));
            }
          },
          child: Text(number.toString()),
        ),
      ),
    );
  }