Android 我使用Future.delayed()在几秒钟后切换到新屏幕,但它会一次又一次跳转到该页面

Android 我使用Future.delayed()在几秒钟后切换到新屏幕,但它会一次又一次跳转到该页面,android,flutter,future,Android,Flutter,Future,奇怪的问题,但我似乎无法解决这个问题。我使用了Future.delayed()切换到另一个屏幕,如下所示: TextButton( label: Text('Submit'), onPressed: () { showDialog(context: context, builder: (context) { Future.delayed(Duration(seconds: 6), () { Navigator.p

奇怪的问题,但我似乎无法解决这个问题。我使用了
Future.delayed()
切换到另一个屏幕,如下所示:

 TextButton(
    label: Text('Submit'),
    onPressed: () {
      showDialog(context: context,
        builder: (context) {
         Future.delayed(Duration(seconds: 6), () {
          Navigator.pushNamed(context,'/',);
           });
         }
       )
它还显示了一个AlertDialog,其中包含我现在没有包含的文本,但更重要的是,它会在6秒钟后将用户带回主页。这发生在应用程序的“末尾”。然而,当我再次开始使用该应用程序时,它会在6秒钟后再次跳回主页。当我什么都不按时,什么也不会发生


Future.delayed()
不应该只在我按下按钮时调用吗?主页上只有一个按钮——一个完全不同的按钮——当按下时,它会做一些完全不同的事情。那么,它为什么要跳回,我如何才能避免它呢?

导航器将其路线保存在堆栈中。因此,当你推它时,它会将你推的路线添加到堆栈的顶部!这也许可以解释你所面临的奇怪行为

如果要返回主屏幕,应使用
Navigator.pop()
。但是,您使用的是
showDialog()
函数。因此,第一个
pop()
将以对话框本身为目标,然后第二个
pop()
将移动到上一个屏幕

如果您只想将用户发送回主屏幕并取消所有其他路由,您可以使用以下方法:

void\u goHome(){
navigator.pushandremove直到(
MaterialPackageRoute(生成器:(BuildContext上下文)=>MyHomePage()),
ModalRoute.withName(“/”),
);
}