Flutter 循环压缩机指示器未及时触发
有一个国家级的Flutter 循环压缩机指示器未及时触发,flutter,Flutter,有一个国家级的 class _SignUpFormState extends State<SignUpForm> { bool _isProcessing = false; ... _iProcessing在此函数中触发 void _submit() { setState(() { _isProcessing = true; }); // doing something heavy that takes a while Nav
class _SignUpFormState extends State<SignUpForm> {
bool _isProcessing = false;
...
_iProcessing在此函数中触发
void _submit() {
setState(() {
_isProcessing = true;
});
// doing something heavy that takes a while
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TabPage(),
),
);
问题是
循环ProgressIndicator
在导航到其他屏幕之前运行了很短的时间。它是否应该在上面代码中所示的长期过程之前运行?您的繁重任务不是异步的(因为您的方法不是异步的),那么它就不需要时间了
如果您想在一段时间内显示CircularProgressIndicator,那么您可以使您的方法异步,并增加将来的延迟。您最重要的事情不是异步的(因为您的方法不是异步的),那么它将不需要时间
如果您想在一段时间内显示CircularProgressIndicator,那么您可以使您的方法异步,并增加将来的延迟。这很有趣,但如何从同步方法生成异步方法呢?那个长期的过程不是返回Future,而是void。若您使方法异步,那个么它将不会返回Future对象。您可以按照以下方式使方法异步Future _submit()async{您读过这篇文章吗,上面说“Dart无论如何都会尝试同步运行它”他正在考虑这个特殊情况,因为该函数不用于任何进程,它不是异步方法。@VirenVVarasadiya,我们不知道实际的“重”代码一开始是异步的,或者不是。这很有趣,但是如何从同步方法中生成异步方法呢?长期过程不是返回未来,而是无效的。如果将方法生成异步,那么它将不会返回未来的对象。您可以按照下面的方式将方法生成异步未来_submit()异步{您读过这篇文章吗,它说它是“Dart无论如何都会尝试同步运行它”他谈到了这个特殊情况,因为该函数不用于任何进程,也不是异步方法。@VirenVVarasadiya,我们不知道实际的“重”代码是异步的还是不发布“重”的代码thing@Sidak这就足够了
void main(){var j;for(var i=0;i<1000000;i++){j=i-1;}
在短时间内,它能运行多长时间?比如瞬间或一段时间内可见while@Sidak不管需要多长时间,因为这只是一个示例来说明问题代码中发生了什么。你没有抓住要点。我要求提供代码的原因是为了让我能够理解它是否本质上是异步的。因此,如果可能,将实际代码/帮助我更好地理解任务性质的精简版本置于“繁重”的代码之后thing@Sidak这对于(vari=0;i<1000000;i++){j=i-1;}在短时间内,它能运行多长时间?比如瞬间或一段时间内可见while@Sidak不管需要多长时间,因为这只是一个示例来说明问题代码中发生了什么。你没有抓住要点。我要求提供代码的原因是为了让我能够理解它是否本质上是异步的。因此,如果可能,将实际的代码/精简版本放入其中,以帮助我更好地理解任务的性质
void _submit() {
setState(() {
_isProcessing = true;
});
// doing something heavy that takes a while
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TabPage(),
),
);