tileSize top-level property Providers UI Settings

ProviderFamily<Size, Tuple2<Size, String>> tileSize
final

Calculate size of ServiceCard based on parentSize tileMagnificationProvider and tileTypeProvider.

{@category Providers} {@category UI Settings}

Implementation

final tileSize = Provider.family<Size, Tuple2<Size, String>>((ref, tuple) {
  final magnification = ref.watch(tileMagnificationProvider);

  final parentSize = tuple.item1;
  final tileType = tuple.item2;
  final parentWidth = parentSize.width;

  if (tileType == 'tile') {
    final divider = (parentWidth - 20) ~/ (magnification * 400.0);
    var cardWidth = (parentWidth / divider) - 10;
    if (divider == 0) {
      cardWidth = (parentWidth - 10).abs();
    }

    return Size(
      cardWidth * 1.0,
      cardWidth / 4,
    );
  } else if (tileType == 'square') {
    var divider = (parentWidth - 20) ~/ (magnification * 150.0);
    if (parentWidth < (magnification * 130)) {
      divider = 1;
    } else if (parentWidth < (magnification * 260)) {
      divider = 2;
    } else {
      divider = divider > 2 ? divider : 3;
    }
    final cardWidth = parentWidth / divider;

    return Size(
      cardWidth,
      cardWidth,
    );
  } else {
    var divider = (parentWidth - 20) ~/ (magnification * 250.0);
    divider = divider > 1 ? divider : 2;
    final cardWidth = parentWidth / divider;

    return Size(
      cardWidth * 1.0,
      cardWidth * 1.2,
    );
  }
});