Flutter setstate()无法与sleep()一起使用

时间:2019-12-21 15:06:26

标签: flutter async-await setstate

我有一个简单的问题,但我是Flutter的新手。我必须更改3个按钮的颜色,然后等待2秒钟并调用另一个函数。 这是代码:

setState((){
   clr[0]= 0==gst ? Colors.green:Colors.red;
   clr[1]= 1==gst ? Colors.green:Colors.red;
   clr[2]= 2==gst ? Colors.green:Colors.red;
 });

 sleep(const Duration(seconds:2));

 cardKey.currentState.toggleCard(); // second function

问题在于此代码等待2秒钟,然后更改颜色并调用第二个函数...

我还尝试了sleep()内的setstate()

1 个答案:

答案 0 :(得分:0)

您应该使用Future.delayed来解决问题,因为不建议使用sleep。确保将函数定义为async。但是,如果您不想标记为异步(或者该功能不适用于异步),则可以使用以下方法:

Future.delayed(Duration(seconds: 2)).then((_) {
  cardKey.currentState.toggleCard(); // second function
});

要了解更多信息,我建议使用this