Flutter timer resets when switching page

1k Views Asked by At

In my flutter app there is a timer and a settings page. When the timer is running and I switch to the setting page (by using PageView), the timer gets reset or there is an error (Unhandled Exception: setState() called after dispose()) This happens because I use setState to decrease the time.

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

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

The timer still keeps running if I turn off the screen. Can someone tell me how I can switch pages without resetting the timer or getting an error?

BTW I created the timer myself and didn't use a package.

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));
  }
1

There are 1 best solutions below

4
On BEST ANSWER

Try navigating to your settings page like this, this way the screen underneath it won't die.

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