【发布时间】:2020-04-13 10:00:29
【问题描述】:
我在 Flutter 中使用 Timer() 在屏幕之间切换,我有 screen1 在一些延迟后切换到 screen2 并在一些延迟后返回到 screen1。
我希望功能以相同的方式工作,但我希望只进行一次切换。现在,在我运行计时器之后,屏幕不断来回切换(这在逻辑上是正确的,因为我没有使用任何函数来使 Timer() 过期)。我想知道如何使 Timer() 过期,这样它就不会多次切换。这是我的代码。
class _SpeedometerScreenState extends State<SpeedometerScreen> {
var duration;
@override
void initState() {
super.initState();
startTimer();
}
startTimer() async {
duration = Duration(seconds: 5);
return Timer(duration, route);
}
route() {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => MapScreen(),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(...);
}
}
我们将不胜感激任何形式的帮助。提前致谢。
【问题讨论】:
-
如何从第 2 页(地图屏幕)切换回第 1 页(速度计屏幕)?
-
我在两个文件中都写了相同的代码,不同的是 Navigator.pushReplacement() 方法。在 MapScreen() 中,我推入 SpeedometerScreen(),反之亦然。
-
在 MapScreen 中使用
Navigator.pop(context);,它将解决您的问题。 -
对不起,我希望它们在我在任一屏幕上时继续切换,但是一旦我转到第三个屏幕,我希望计时器立即停止。现在它继续在后台运行,无论我在哪里,它都会根据轮到谁切换回地图或速度计屏幕......任何猜测即使在我切换到第三个屏幕后也可以做些什么来避免切换?
-
查看我的答案,如果您需要任何其他详细信息,请告诉我