有没有办法从一个屏幕过渡到另一个屏幕,而不使用任何事件,只使用时间?
Is there a way to transition from one screen to another, without using any events, just using time alone?
假设我有两个页面:-
Tester1.dart
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()
)
);
}
),
),
),
);
}
}
和Tester2.dart
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'),
],
),
),
);
}
}
我希望能够从 Tester1 转换到 Tester2,但不必在一段时间后按顺序单击屏幕或任何事件。我怎样才能做到这一点?
是的,您必须在第一页的 init() 函数上使用 Future.delayed()
像这样(添加到首页):
Future<void> initState() {
super.initState();
//replace 1000 with your time required
Future.delayed(Duration(milliseconds: 1000), () {
Navigator.push(currentContext,
MaterialPageRoute(builder: (context) => Testers2()));
},
});
}
一种可能的方法是使用 Timer
和 StatefulWidget
,这样您就可以设置一个带有触发器的计时器,一旦计时器 运行s 出来并触发。
这是代码示例:
class Testers1 extends StatefulWidget {
@override
_Testers1State createState() => _Testers1State();
}
class _Testers1State extends State<Testers1> {
Widget build(BuildContext context) {
return Scaffold(
body: Container()
);
}
@override
void initState() {
super.initState();
Timer(Duration(seconds: 10), () {
Navigator.push(
context, MaterialPageRoute(builder: (context) => Testers2()));
});
}
}
class Testers2 extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Screen2'),
),
body: Column(
children: <Widget>[
Text('Placeholder0'),
Text('Placeholder1'),
],
),
);
}
}
注意:Timer
来自 'dart:async'
假设我有两个页面:-
Tester1.dart
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()
)
);
}
),
),
),
);
}
}
和Tester2.dart
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'),
],
),
),
);
}
}
我希望能够从 Tester1 转换到 Tester2,但不必在一段时间后按顺序单击屏幕或任何事件。我怎样才能做到这一点?
是的,您必须在第一页的 init() 函数上使用 Future.delayed()
像这样(添加到首页):
Future<void> initState() {
super.initState();
//replace 1000 with your time required
Future.delayed(Duration(milliseconds: 1000), () {
Navigator.push(currentContext,
MaterialPageRoute(builder: (context) => Testers2()));
},
});
}
一种可能的方法是使用 Timer
和 StatefulWidget
,这样您就可以设置一个带有触发器的计时器,一旦计时器 运行s 出来并触发。
这是代码示例:
class Testers1 extends StatefulWidget {
@override
_Testers1State createState() => _Testers1State();
}
class _Testers1State extends State<Testers1> {
Widget build(BuildContext context) {
return Scaffold(
body: Container()
);
}
@override
void initState() {
super.initState();
Timer(Duration(seconds: 10), () {
Navigator.push(
context, MaterialPageRoute(builder: (context) => Testers2()));
});
}
}
class Testers2 extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Screen2'),
),
body: Column(
children: <Widget>[
Text('Placeholder0'),
Text('Placeholder1'),
],
),
);
}
}
注意:Timer
来自 'dart:async'