切换页面时 Flutter 计时器会重置

Flutter timer resets when switching page

在我的 flutter 应用程序中有一个计时器和一个设置页面。当计时器为运行并且我切换到设置页面(通过使用PageView)时,计时器被重置或出现错误(未处理的异常:setState()在dispose()之后调用) 发生这种情况是因为我使用 setState 来减少时间。

    if (!mounted) return;
    setState(() {
      final seconds = duration.inSeconds - 1;

      if (seconds < 0) {
        isWork = !isWork;
        reset(autostartSession);
      } else {
        duration = Duration(seconds: seconds);
      }
    });
}

如果我关闭屏幕,计时器仍然保持 运行。 谁能告诉我如何在不重置计时器或不出错的情况下切换页面?

顺便说一句,我自己创建了计时器,没有使用包。

Widget buildTimer() {
    String twoDigits(int n) => n.toString().padLeft(2, '0');
    final minutes = twoDigits(duration.inMinutes.remainder(60));
    final seconds = twoDigits(duration.inSeconds.remainder(60));

    return Text('$minutes:$seconds', style: const TextStyle(fontSize: 80));
  }

尝试像这样导航到您的设置页面,这样它下面的屏幕就不会死掉。

                  Navigator.push(
                          context,
                          MaterialPageRoute(
                            builder: (context) => SecondPage(),
                          ));