2021-07-19 00:47:22 +02:00
|
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
2020-06-03 13:18:37 +02:00
|
|
|
|
2021-07-19 00:47:22 +02:00
|
|
|
part 'bitrate.freezed.dart';
|
2021-11-12 21:04:53 +01:00
|
|
|
part 'bitrate.g.dart';
|
2020-06-03 13:18:37 +02:00
|
|
|
|
2021-07-19 00:47:22 +02:00
|
|
|
/// Encapsulates bitrate.
|
|
|
|
@freezed
|
|
|
|
class Bitrate with Comparable<Bitrate>, _$Bitrate {
|
2020-06-03 13:18:37 +02:00
|
|
|
/// Kilobits per second.
|
|
|
|
double get kiloBitsPerSecond => bitsPerSecond / 1024;
|
2020-06-05 16:17:08 +02:00
|
|
|
|
2020-06-03 13:18:37 +02:00
|
|
|
/// Megabits per second.
|
|
|
|
double get megaBitsPerSecond => kiloBitsPerSecond / 1024;
|
2020-06-05 16:17:08 +02:00
|
|
|
|
2020-06-03 13:18:37 +02:00
|
|
|
/// Gigabits per second.
|
|
|
|
double get gigaBitsPerSecond => megaBitsPerSecond / 1024;
|
|
|
|
|
|
|
|
/// Initializes an instance of [Bitrate]
|
2022-02-28 12:26:56 +01:00
|
|
|
//@With<Comparable<Bitrate>>()
|
2021-07-19 00:47:22 +02:00
|
|
|
const factory Bitrate(
|
|
|
|
|
|
|
|
/// Bits per second.
|
|
|
|
int bitsPerSecond) = _Bitrate;
|
|
|
|
|
2021-11-12 21:04:53 +01:00
|
|
|
factory Bitrate.fromJson(Map<String, dynamic> json) =>
|
|
|
|
_$BitrateFromJson(json);
|
|
|
|
|
2021-07-19 00:47:22 +02:00
|
|
|
const Bitrate._();
|
2020-06-03 13:18:37 +02:00
|
|
|
|
2021-09-28 16:49:38 +02:00
|
|
|
static const Bitrate unknown = Bitrate(0);
|
|
|
|
|
2020-06-03 13:18:37 +02:00
|
|
|
@override
|
2020-06-05 16:17:08 +02:00
|
|
|
int compareTo(Bitrate other) => bitsPerSecond.compareTo(other.bitsPerSecond);
|
2020-06-03 13:18:37 +02:00
|
|
|
|
|
|
|
String _getLargestSymbol() {
|
|
|
|
if (gigaBitsPerSecond.abs() >= 1) {
|
|
|
|
return 'Gbit/s';
|
|
|
|
}
|
|
|
|
if (megaBitsPerSecond.abs() >= 1) {
|
|
|
|
return 'Mbit/s';
|
|
|
|
}
|
|
|
|
if (kiloBitsPerSecond.abs() >= 1) {
|
|
|
|
return 'Kbit/s';
|
|
|
|
}
|
|
|
|
return 'Bit/s';
|
|
|
|
}
|
|
|
|
|
|
|
|
num _getLargestValue() {
|
|
|
|
if (gigaBitsPerSecond.abs() >= 1) {
|
|
|
|
return gigaBitsPerSecond;
|
|
|
|
}
|
|
|
|
if (megaBitsPerSecond.abs() >= 1) {
|
|
|
|
return megaBitsPerSecond;
|
|
|
|
}
|
|
|
|
if (kiloBitsPerSecond.abs() >= 1) {
|
|
|
|
return kiloBitsPerSecond;
|
|
|
|
}
|
|
|
|
return bitsPerSecond;
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
2021-09-01 18:39:09 +02:00
|
|
|
String toString() =>
|
|
|
|
'${_getLargestValue().toStringAsFixed(2)} ${_getLargestSymbol()}';
|
2020-06-05 16:17:08 +02:00
|
|
|
}
|