Flutter 有没有办法从一个屏幕过渡到另一个屏幕,不使用任何事件,只使用时间?

Flutter 有没有办法从一个屏幕过渡到另一个屏幕,不使用任何事件,只使用时间?,flutter,flutter-animation,Flutter,Flutter Animation,假设我有两页:- 测试员1.省道 import 'package:flutter/material.dart'; import 'package:gelijk_spel/Testers2.dart'; class Testers1 extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( bo

假设我有两页:-

测试员1.省道

import 'package:flutter/material.dart';
import 'package:gelijk_spel/Testers2.dart';

class Testers1 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: IconButton(
              icon: Hero(
                  tag: 'elderimg',
                  child: Image.asset(
                    'assets/Images/elder.png', width: 100, height: 100,),
              ),
              onPressed: () {
                Navigator.push(context,
                    MaterialPageRoute(
                        builder: (context) => Testers2()
                    )
                );
              }
          ),
        ),
      ),
    );
  }

}
还有测试员2.飞镖

import 'package:flutter/material.dart';

class Testers2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Screen2'),
        ),
        body: Column(
          children: <Widget>[
            Text('Placeholder0'),
            Hero(
              tag: 'elderimg',
              child: Image.asset('assets/Images/elder.png',width: 100, height: 100,)
            ),
            Text('Placeholder1'),
          ],
        ),
      ),
    );
  }

}
导入“包装:颤振/材料.省道”;
类Testers2扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:文本(“屏幕2”),
),
正文:专栏(
儿童:[
文本(“占位符0”),
英雄(
标签:“elderimg”,
子对象:Image.asset('assets/Images/elder.png',宽度:100,高度:100,)
),
文本(“占位符1”),
],
),
),
);
}
}

我希望能够从Tester1过渡到Tester2,但不必在一段时间后按顺序单击屏幕或任何事件。如何实现这一点?

是的,您必须在第一页的init()函数中使用Future.delayed()

如下所示(将此添加到第一页):

Future initState(){
super.initState();
//用所需时间替换1000
延迟(持续时间(毫秒:1000),(){
Navigator.push(当前上下文,
MaterialPackageRoute(builder:(context)=>Testers2());
},
});
}

是的,您必须在第一页的init()函数中使用Future.delayed()

如下所示(将此添加到第一页):

Future initState(){
super.initState();
//用所需时间替换1000
延迟(持续时间(毫秒:1000),(){
Navigator.push(当前上下文,
MaterialPackageRoute(builder:(context)=>Testers2());
},
});
}

一种可能的方法是使用
计时器和
状态窗口小部件
,这样您就可以设置一个带有触发器的计时器,该触发器将在计时器用完并触发时立即运行导航代码

以下是代码示例:

class Testers1扩展了StatefulWidget{
@凌驾
_Testers1State createState()=>\u Testers1State();
}
类_Testers1State扩展状态{
小部件构建(构建上下文){
返回脚手架(
正文:Container()
);
}
@凌驾
void initState(){
super.initState();
计时器(持续时间(秒:10),(){
导航器。推(
context,materialpage(builder:(context)=>Testers2());
});
}
}
class Testers2扩展了无状态小部件{
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“屏幕2”),
),
正文:专栏(
儿童:[
文本(“占位符0”),
文本(“占位符1”),
],
),
);
}
}

注意:
Timer
来自
'dart:async'
一种可能的方法是使用
Timer
StatefulWidget
,这样您就可以设置一个带有触发器的计时器,该触发器将在计时器用完并触发时立即运行导航代码

以下是代码示例:

class Testers1扩展了StatefulWidget{
@凌驾
_Testers1State createState()=>\u Testers1State();
}
类_Testers1State扩展状态{
小部件构建(构建上下文){
返回脚手架(
正文:Container()
);
}
@凌驾
void initState(){
super.initState();
计时器(持续时间(秒:10),(){
导航器。推(
context,materialpage(builder:(context)=>Testers2());
});
}
}
class Testers2扩展了无状态小部件{
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“屏幕2”),
),
正文:专栏(
儿童:[
文本(“占位符0”),
文本(“占位符1”),
],
),
);
}
}
注意:
Timer
来自
'dart:async'

我的第一页中没有
init()
函数,因此它也找不到
super.initState()
。也找不到
currentContext
。很抱歉,我还是新手,我的第一页中没有
init()
函数,因此它也找不到
super.initState()
。也找不到
currentContext
。抱歉,我还是个新手
  Future<void> initState()  {
    super.initState();

//replace 1000 with your time required
  Future.delayed(Duration(milliseconds: 1000), () {
           Navigator.push(currentContext,
              MaterialPageRoute(builder: (context) => Testers2()));
        },
      });
}