我有这个组件:
GestureDetector(
onLongPress: () {
_startTimer();
},
onLongPressUp: () {
_timer.cancel();
},
onLongPressEnd: (LongPressEndDetails longPressEndDetails) {
_timer.cancel();
},
child: CircularPercentIndicator(
animationDuration: 200,
animateFromLastPercent: true,
radius: 150.0,
lineWidth: 10.0,
percent: _progress,
progressColor: Colors.red,
backgroundColor: Colors.white,
animation: true,
circularStrokeCap: CircularStrokeCap.butt,
),
),
而启动定时器的方法是:
void _startTimer() {
const oneSec = const Duration(milliseconds: 200);
_timer = Timer.periodic(oneSec, (timer) {
print(timer.tick.toString());
final updated = ((_progress + 0.01).clamp(0.0, 1.0) * 100);
print(updated.round() / 100);
// if (_progress < 1.0)
setState(() {
_progress = updated.round() / 100;
});
});
}
@override
void dispose() {
_timer.cancel();
super.dispose();
}
我的问题是,我想缓慢而平稳地填充进度颜色,即根据剩余时间更新百分比。像 Snapchat 录像机之类的东西。我想填满 3 分钟的百分比。我尝试过玩不同的东西,但要么太不流畅,要么很快就完成了。我究竟做错了什么?谢谢