getOverlaidColor static method

String getOverlaidColor(
  1. String mainColor,
  2. String colorOverlay,
  3. double opacityOverlay
)

Implementation

static String getOverlaidColor(
    String mainColor, String colorOverlay, double opacityOverlay) {
  if (mainColor.length == 7) mainColor = mainColor.substring(1);
  final R = int.parse(mainColor.substring(0, 2), radix: 16);
  final G = int.parse(mainColor.substring(2, 4), radix: 16);
  final B = int.parse(mainColor.substring(4, 6), radix: 16);

  if (colorOverlay.length == 7) colorOverlay = colorOverlay.substring(1);
  final overlayR = int.parse(colorOverlay.substring(0, 2), radix: 16);
  final overlayG = int.parse(colorOverlay.substring(2, 4), radix: 16);
  final overlayB = int.parse(colorOverlay.substring(4, 6), radix: 16);

  final finalColorR =
      (R * (1.0 - opacityOverlay) + overlayR * opacityOverlay).round();
  final finalColorG =
      (G * (1.0 - opacityOverlay) + overlayG * opacityOverlay).round();
  final finalColorB =
      (B * (1.0 - opacityOverlay) + overlayB * opacityOverlay).round();

  final overlaidR =
      finalColorR < 10 ? "0$finalColorR" : finalColorR.toRadixString(16);
  final overlaidG =
      finalColorG < 10 ? "0$finalColorG" : finalColorG.toRadixString(16);
  final overlaidB =
      finalColorB < 10 ? "0$finalColorB" : finalColorB.toRadixString(16);
  return "#$overlaidR$overlaidG$overlaidB";
}