【发布时间】:2020-06-23 05:12:42
【问题描述】:
我对颤振相当陌生,所以如果这是一个简单的问题,我很抱歉。无论如何,我的应用程序上有一个屏幕,它是一个有状态的小部件。据我了解,当调用 setState() 函数时,有状态小部件会立即更改状态。这样做会立即调用 build() 函数。
但是,当我的代码运行下面的函数(为按钮调用 onPressed)时,它会运行整个函数,然后更改状态。
void buttonPressed() {
if (formKey.currentState.validate()) {
setState(() {
isLoading = true;
});
sleep(Duration(seconds: 3));
Navigator.pushReplacement(context, MaterialPageRoute(
builder: (context) => NextScreen(),
));
}
}
我要做的是实现一个传统的加载图标,该图标会旋转 3 秒(在这种情况下),然后再转到下一个屏幕。然而,当我运行它时,实际发生的情况是应用程序完全停止了 3 秒,显示加载图标只有几分之一秒,然后移动到 NextScreen()。
我尝试通过将 sleep() 和 Navigator.pushReplacement() 行放在单独的方法中来解决这个问题(以防调用堆栈出现问题)。这也不起作用。
任何想法为什么会发生这种情况和/或我如何解决它。任何建议都有帮助,谢谢!
【问题讨论】: