BitmapDataLoadInfo constructor

BitmapDataLoadInfo(
  1. String url,
  2. List<double> pixelRatios
)

Implementation

BitmapDataLoadInfo(String url, List<double> pixelRatios)
    : _sourceUrl = url,
      _loaderUrl = url {
  final pixelRatioRegexp = RegExp(r'@(\d+(.\d+)?)x');
  final pixelRatioMatch = pixelRatioRegexp.firstMatch(sourceUrl);

  if (pixelRatioMatch != null) {
    final match = pixelRatioMatch;
    final originPixelRatioFractions = (match.group(2) ?? '.').length - 1;
    final originPixelRatio = double.parse(match.group(1)!);
    final devicePixelRatio = env.devicePixelRatio;
    final loaderPixelRatio = pixelRatios.fold<num>(0.0, (a, b) {
      final aDelta = (a - devicePixelRatio).abs();
      final bDelta = (b - devicePixelRatio).abs();
      return aDelta < bDelta && a > 0.0 ? a : b;
    });
    final name = loaderPixelRatio.toStringAsFixed(originPixelRatioFractions);
    _loaderUrl = url.replaceRange(match.start + 1, match.end - 1, name);
    _pixelRatio = loaderPixelRatio / originPixelRatio;
  }
}