Я играю с простым приложением обратного отсчета флаттера. Он состоит из 2 страниц, часов и страницы настроек для установки минут и секунд для обратного отсчета.
На странице часов (HomeWidget) пользователь нажимает кнопку, чтобы перейти на страницу настроек. После редактирования значений пользователь нажимает аппаратную клавишу «Назад» или кнопку на панели приложения, чтобы вернуться на страницу часов.
class _HomeWidgetState extends State<HomeWidget> {
@override
Widget build(BuildContext context) {
TimeService _timeService = ScopedModel.of<TimeService>(context);
SettingsModel _settingsModel = ScopedModel.of<SettingsModel>(context);
_timeService.setTime(_settingsModel.minutes, _settingsModel.seconds);
return Scaffold( ... display the clock, navigation buttons, etc ... )}
Моя проблема в том, что при переходе назад я устанавливаю новые значенияв классе обслуживания времени, который обрабатывает обратный отсчет. Но в примере кода служба времени обновляется каждый раз, когда часы перерисовываются (каждую секунду). Обратный отсчет не работает, значение остается прежним. Вместо отображения «10:29», он придерживается «10:30». Я не знаю, как обрабатывать зависимость между моим классом TimeService и моим классом SettingsModel.
Как правильно обрабатывать присвоение значений настроек в классе обслуживания времени, когда пользователь переходит обратно? Метод build
явно не в том месте. Кто-нибудь может дать мне подсказку?