我是flutter的新手,也是riverpod的新手。我刚刚得到一些代码的帮助,使用倒计时时钟,然后可以使用riverpod在多个页面上查看。这里是riverpod状态通知程序。
final countDownControllerProvider = StateNotifierProvider.family
.autoDispose<CountdownController, Duration, Duration>(
(ref, initialDuration) {
return CountdownController(initialDuration);
});
class CountdownController extends StateNotifier<Duration> {
Timer? timer;
final Duration initialDuration;
CountdownController(this.initialDuration) : super(initialDuration) {
stopTimer();
}
void startTimer() {
timer = Timer.periodic(const Duration(seconds: 1), (timer) {
if (state == Duration.zero) {
timer.cancel();
} else {
if (mounted) {
state = state - const Duration(seconds: 1);
} else {
timer.cancel();
}
}
});
}
}
目前,倒计时时钟上显示的时间输入是在调用CountdownController时输入的。(类中包含startTimer函数)。我遇到的问题是,如果我想调用startTimer(),我需要重新输入要显示的时间,如果我停止并启动时钟,这是一个问题。
如何将时间输入从CountdownController类的一个参数移动到类中的一个函数中,然后在需要时调用该函数,这样在启动/停止时钟时就不必设置它了?该代码是什么样子的?
非常感谢
1条答案
按热度按时间0x6upsns1#
我没有测试它。如果你需要保存状态的持续时间,考虑把状态做成一个数据类。