Использовать notifyListeners() как setState()

#flutter #provider

#flutter #поставщик

Вопрос:

Я создаю таймер с помощью Flutter. Изначально я использовал statefulwidget с setState, но в настоящее время я перенес код таймера на использование поставщика.

Проблема теперь в том, что когда я использовал setState time, все работало хорошо, но когда я использовал notifyListeners(), время шло не сразу, как я могу использовать notifyListeners (), чтобы изменить время, как setState?

Код setState

         _StartTimer() {
      startTime = formatted;
      start = new DateTime.now();
      start = elapsedTime > 0
          ? start.subtract(Duration(seconds: elapsedTime))
          : start;
      timer = Timer.periodic(Duration(seconds: 1), (timer) {
        setState(() {
          if (time > elapsedTime) {
            elapsedTime = DateTime.now().difference(start).inSeconds;
          } else {
            endTime = formatter.format(new DateTime.now());
            time = pomodoroTime * 60;
            elapsedTime = 0;
              count;
            _animationController.reverse();
            timer.cancel();
            bottomSheet();
          }
        });
      });
    }
  

Код notifyListeners()

 StartTimer() {
        startTime = formatted;
        start = new DateTime.now();
        start = elapsedTime > 0
            ? start.subtract(Duration(seconds: elapsedTime))
            : start;
        timer = Timer.periodic(Duration(seconds: 1), (timer) {
          if (time > elapsedTime) {
            elapsedTime = DateTime.now().difference(start).inSeconds;
          } else {
            endTime = formatter.format(new DateTime.now());
            time = pomodoroTime * 60;
            elapsedTime = 0;
            timer.cancel();
          }
          notifyListeners();
        });
      }
  

Комментарии:

1. вы расширяете уведомитель об изменениях и добавляете поставщика в основной класс

2. Да, я решил причину, по которой таймер не работал, я установил Provider.of listen : false…