0

在我的颤振应用程序中有一个计时器和一个设置页面。当计时器正在运行并且我切换到设置页面(通过使用 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));
  }
4

1 回答 1

1

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

                  Navigator.push(
                          context,
                          MaterialPageRoute(
                            builder: (context) => SecondPage(),
                          ));
于 2021-10-11T18:18:20.820 回答