#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…