Files
moodiary/lib/utils/send_util.dart
2024-12-30 10:31:10 +08:00

29 lines
824 B
Dart

class UploadSpeedCalculator {
final int updateIntervalInMilliseconds;
DateTime _lastUpdateTime = DateTime.now();
double _speed = 0.0;
int _previousSentBytes = 0;
UploadSpeedCalculator({this.updateIntervalInMilliseconds = 500});
void updateSpeed(int sent) {
final currentTime = DateTime.now();
final timeElapsed =
currentTime.difference(_lastUpdateTime).inMilliseconds / 1000;
if (timeElapsed >= (updateIntervalInMilliseconds / 1000)) {
final sentSinceLastUpdate = sent - _previousSentBytes;
_speed = sentSinceLastUpdate / timeElapsed;
const maxSpeed = 1.0 * 1024 * 1024 * 1024;
if (_speed > maxSpeed) {
_speed = maxSpeed;
}
_previousSentBytes = sent;
_lastUpdateTime = currentTime;
}
}
double getSpeed() {
return _speed;
}
}