Files
PiliPlus/lib/utils/extension/num_ext.dart
My-Responsitories 85292a3df2 opt: image viewer (#1837)
* opt: image

* opt: MatrixTransition

* update


---------

Co-authored-by: dom <githubaccount56556@proton.me>
2026-02-15 17:13:55 +08:00

41 lines
1.0 KiB
Dart

import 'dart:math' show pow;
import 'package:flutter/widgets.dart';
extension ImageExtension on num {
int? cacheSize(BuildContext context) {
if (this == 0) {
return null;
}
return (this * MediaQuery.devicePixelRatioOf(context)).round();
}
}
extension IntExt on int? {
int? operator +(int other) => this == null ? null : this! + other;
int? operator -(int other) => this == null ? null : this! - other;
}
extension DoubleExt on double {
double toPrecision(int fractionDigits) {
final mod = pow(10, fractionDigits).toDouble();
return (this * mod).roundToDouble() / mod;
}
bool equals(double other, [double epsilon = 1e-10]) =>
(this - other).abs() < epsilon;
double lerp(double a, double b) {
assert(
a.isFinite,
'Cannot interpolate between finite and non-finite values',
);
assert(
b.isFinite,
'Cannot interpolate between finite and non-finite values',
);
assert(isFinite, 't must be finite when interpolating between values');
return a * (1.0 - this) + b * this;
}
}