flutter - 像 setState() 一样使用 notifyListeners()
问题描述
我正在用颤振做一个计时器。最初,我使用带有 setState 的 statefulwidget,但目前我移动了计时器代码以使用提供程序。
现在的问题是,当我使用 setState 时间效果很好,但是当我使用 notifyListeners() 时,时间并没有立即过去,如何使用 notifyListeners() 来更改 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();
});
}
解决方案
推荐阅读
- typescript - 生产模式下的 Mat Tab Change 事件
- spring-boot - SpringSecurity:认证成功后如何继续向 RestController 转发请求?
- wordpress - 注册 WP-Members 后如何自动登录用户?
- hive - Hive:如何通过排序获得全局排序
- r - tidyverse 收集多个列
- dart - Dart fromJson 无法解析双精度值
- lua - pdns-recursor lua preresolve 脚本无法正常工作
- hadoop - Flink 数据源迭代
- interface - AWS Amplify 和 GraphQL 接口
- android - 在 Android 中生成动态视图