paint method

  1. @override
void paint(
  1. Canvas canvas,
  2. Size size
)
override

Called whenever the object needs to paint. The given Canvas has its coordinate space configured such that the origin is at the top left of the box. The area of the box is the size of the size argument.

Paint operations should remain inside the given area. Graphical operations outside the bounds may be silently ignored, clipped, or not clipped. It may sometimes be difficult to guarantee that a certain operation is inside the bounds (e.g., drawing a rectangle whose size is determined by user inputs). In that case, consider calling Canvas.clipRect at the beginning of paint so everything that follows will be guaranteed to only draw within the clipped area.

Implementations should be wary of correctly pairing any calls to Canvas.save/Canvas.saveLayer and Canvas.restore, otherwise all subsequent painting on this canvas may be affected, with potentially hilarious but confusing results.

To paint text on a Canvas, use a TextPainter.

To paint an image on a Canvas:

  1. Obtain an ImageStream, for example by calling ImageProvider.resolve on an AssetImage or NetworkImage object.

  2. Whenever the ImageStream's underlying ImageInfo object changes (see ImageStream.addListener), create a new instance of your custom paint delegate, giving it the new ImageInfo object.

  3. In your delegate's paint method, call the Canvas.drawImage, Canvas.drawImageRect, or Canvas.drawImageNine methods to paint the ImageInfo.image object, applying the ImageInfo.scale value to obtain the correct rendering size.

Implementation

@override
void paint(Canvas canvas, Size size) {
  final scaleX = size.width / 22.000000051197276;
  final scaleY = size.height / 22.000000051674014;
  final scale = math.min(scaleX, scaleY);

  final translationX = (size.width - 22.000000051197276 * scale) / 2 - 0.991209948802726 * scale;
  final translationY = (size.height - 22.000000051674014 * scale) / 2 - 1.0004399483259823 * scale;

  final path = Path();
  final paint = Paint()..color = color;

  path.moveTo(
    9.99121 * scale + translationX,
    15.00044 * scale + translationY,
  );

  path.cubicTo(
    10.256473268904148 * scale + translationX,
    15.000593401601998 * scale + translationY,
    10.510916647216517 * scale + translationX,
    14.895286013193827 * scale + translationY,
    10.698486407512107 * scale + translationX,
    14.707716252898237 * scale + translationY,
  );

  path.cubicTo(
    10.886056167807697 * scale + translationX,
    14.520146492602647 * scale + translationY,
    10.991363556215868 * scale + translationX,
    14.265703114290279 * scale + translationY,
    10.991209576129707 * scale + translationX,
    14.000439460080317 * scale + translationY,
  );

  path.lineTo(
    10.99121 * scale + translationX,
    6.000439999999999 * scale + translationY,
  );

  path.cubicTo(
    10.99121 * scale + translationX,
    5.448155250169206 * scale + translationY,
    10.543494749830794 * scale + translationX,
    5.000439999999999 * scale + translationY,
    9.99121 * scale + translationX,
    5.000439999999999 * scale + translationY,
  );

  path.cubicTo(
    9.438925250169207 * scale + translationX,
    5.000439999999999 * scale + translationY,
    8.99121 * scale + translationX,
    5.448155250169206 * scale + translationY,
    8.99121 * scale + translationX,
    6.000439999999999 * scale + translationY,
  );

  path.lineTo(
    8.99121 * scale + translationX,
    14.00044 * scale + translationY,
  );

  path.cubicTo(
    8.991058434971993 * scale + translationX,
    14.265702464723395 * scale + translationY,
    9.096366678246405 * scale + translationX,
    14.520144301145766 * scale + translationY,
    9.283935864114143 * scale + translationX,
    14.707713487013505 * scale + translationY,
  );

  path.cubicTo(
    9.471505049981882 * scale + translationX,
    14.895282672881244 * scale + translationY,
    9.725946886404254 * scale + translationX,
    15.000590916155653 * scale + translationY,
    9.991209729780158 * scale + translationX,
    15.000439594301731 * scale + translationY,
  );

  path.close();

  path.moveTo(
    13.99121 * scale + translationX,
    15.00044 * scale + translationY,
  );

  path.cubicTo(
    14.25647311464623 * scale + translationX,
    15.000593401601998 * scale + translationY,
    14.510916492958598 * scale + translationX,
    14.895286013193827 * scale + translationY,
    14.698486253254188 * scale + translationX,
    14.707716252898237 * scale + translationY,
  );

  path.cubicTo(
    14.886056013549778 * scale + translationX,
    14.520146492602647 * scale + translationY,
    14.99136340195795 * scale + translationX,
    14.265703114290279 * scale + translationY,
    14.991209421871789 * scale + translationX,
    14.000439460080317 * scale + translationY,
  );

  path.lineTo(
    14.99121 * scale + translationX,
    6.000439999999999 * scale + translationY,
  );

  path.cubicTo(
    14.99121 * scale + translationX,
    5.448155250169206 * scale + translationY,
    14.543494749830794 * scale + translationX,
    5.000439999999999 * scale + translationY,
    13.99121 * scale + translationX,
    5.000439999999999 * scale + translationY,
  );

  path.cubicTo(
    13.438925250169207 * scale + translationX,
    5.000439999999999 * scale + translationY,
    12.99121 * scale + translationX,
    5.448155250169206 * scale + translationY,
    12.99121 * scale + translationX,
    6.000439999999999 * scale + translationY,
  );

  path.lineTo(
    12.99121 * scale + translationX,
    14.00044 * scale + translationY,
  );

  path.cubicTo(
    12.991058326788963 * scale + translationX,
    14.265702464723395 * scale + translationY,
    13.096366570063374 * scale + translationX,
    14.520144301145766 * scale + translationY,
    13.283935755931113 * scale + translationX,
    14.707713487013505 * scale + translationY,
  );

  path.cubicTo(
    13.471504941798852 * scale + translationX,
    14.895282672881244 * scale + translationY,
    13.725946778221223 * scale + translationX,
    15.000590916155653 * scale + translationY,
    13.991209621597127 * scale + translationX,
    15.000439594301731 * scale + translationY,
  );

  path.close();

  path.moveTo(
    5.991210000000001 * scale + translationX,
    13.00044 * scale + translationY,
  );

  path.cubicTo(
    6.256473423162069 * scale + translationX,
    13.000593478730957 * scale + translationY,
    6.510916801474436 * scale + translationX,
    12.895286090322786 * scale + translationY,
    6.698486561770026 * scale + translationX,
    12.707716330027196 * scale + translationY,
  );

  path.cubicTo(
    6.886056322065615 * scale + translationX,
    12.520146569731606 * scale + translationY,
    6.991363710473788 * scale + translationX,
    12.265703191419238 * scale + translationY,
    6.9912097303876255 * scale + translationX,
    12.000439537209276 * scale + translationY,
  );

  path.lineTo(
    6.991210000000001 * scale + translationX,
    8.00044 * scale + translationY,
  );

  path.cubicTo(
    6.991210000000001 * scale + translationX,
    7.448155250169206 * scale + translationY,
    6.543494749830794 * scale + translationX,
    7.000439999999999 * scale + translationY,
    5.991210000000001 * scale + translationX,
    7.000439999999999 * scale + translationY,
  );

  path.cubicTo(
    5.438925250169207 * scale + translationX,
    7.000439999999999 * scale + translationY,
    4.991210000000001 * scale + translationX,
    7.448155250169206 * scale + translationY,
    4.991210000000001 * scale + translationX,
    8.00044 * scale + translationY,
  );

  path.lineTo(
    4.991210000000001 * scale + translationX,
    12.00044 * scale + translationY,
  );

  path.cubicTo(
    4.991058543155025 * scale + translationX,
    12.26570251881491 * scale + translationY,
    5.096366786429434 * scale + translationX,
    12.520144355237282 * scale + translationY,
    5.283935972297172 * scale + translationX,
    12.70771354110502 * scale + translationY,
  );

  path.cubicTo(
    5.47150515816491 * scale + translationX,
    12.89528272697276 * scale + translationY,
    5.725946994587283 * scale + translationX,
    13.000590970247169 * scale + translationY,
    5.9912098379631855 * scale + translationX,
    13.000439648393247 * scale + translationY,
  );

  path.close();

  path.moveTo(
    19.991210000000002 * scale + translationX,
    1.0004399999999993 * scale + translationY,
  );

  path.lineTo(
    3.9912100000000024 * scale + translationX,
    1.0004399999999993 * scale + translationY,
  );

  path.cubicTo(
    2.335105004658407 * scale + translationX,
    1.0022477036181006 * scale + translationY,
    0.9930177040948454 * scale + translationX,
    2.3443350041816626 * scale + translationY,
    0.991209948802726 * scale + translationX,
    4.000439793372108 * scale + translationY,
  );

  path.lineTo(
    0.9912100000000024 * scale + translationX,
    20.000439999999998 * scale + translationY,
  );

  path.cubicTo(
    0.9930177040948454 * scale + translationX,
    21.65654375614189 * scale + translationY,
    2.3351050046584074 * scale + translationX,
    22.998631056705452 * scale + translationY,
    3.9912097938488524 * scale + translationX,
    23.000438811997572 * scale + translationY,
  );

  path.lineTo(
    19.991210000000002 * scale + translationX,
    23.000439999999998 * scale + translationY,
  );

  path.cubicTo(
    21.647313756618637 * scale + translationX,
    22.998631056705452 * scale + translationY,
    22.9894010571822 * scale + translationX,
    21.65654375614189 * scale + translationY,
    22.99120881247432 * scale + translationX,
    20.000438966951446 * scale + translationY,
  );

  path.lineTo(
    22.991210000000002 * scale + translationX,
    4.0004399999999976 * scale + translationY,
  );

  path.cubicTo(
    22.9894010571822 * scale + translationX,
    2.3443350041816604 * scale + translationY,
    21.647313756618637 * scale + translationX,
    1.0022477036180992 * scale + translationY,
    19.99120896742819 * scale + translationX,
    1.0004399483259823 * scale + translationY,
  );

  path.close();

  path.moveTo(
    20.991210000000002 * scale + translationX,
    20.000439999999998 * scale + translationY,
  );

  path.cubicTo(
    20.99083979233344 * scale + translationX,
    20.55257096084976 * scale + translationY,
    20.543340961138934 * scale + translationX,
    21.000069792044258 * scale + translationY,
    19.991209373689813 * scale + translationX,
    21.00043934207136 * scale + translationY,
  );

  path.lineTo(
    3.9912100000000024 * scale + translationX,
    21.000439999999998 * scale + translationY,
  );

  path.cubicTo(
    3.4390782875091506 * scale + translationX,
    21.000069792044258 * scale + translationY,
    2.9915794563146494 * scale + translationX,
    20.55257096084976 * scale + translationY,
    2.9912099062875512 * scale + translationX,
    20.00043937340064 * scale + translationY,
  );

  path.lineTo(
    2.9912100000000024 * scale + translationX,
    4.0004399999999976 * scale + translationY,
  );

  path.cubicTo(
    2.99157945631465 * scale + translationX,
    3.448308287219977 * scale + translationY,
    3.439078287509151 * scale + translationX,
    3.0008094560254763 * scale + translationY,
    3.991209874958272 * scale + translationX,
    3.000439905998377 * scale + translationY,
  );

  path.lineTo(
    19.991210000000002 * scale + translationX,
    3.0004399999999976 * scale + translationY,
  );

  path.cubicTo(
    20.543340961138934 * scale + translationX,
    3.000809456025475 * scale + translationY,
    20.990839792333436 * scale + translationX,
    3.4483082872199766 * scale + translationY,
    20.991209342360534 * scale + translationX,
    4.000439874669098 * scale + translationY,
  );

  path.close();

  path.moveTo(
    17.34766 * scale + translationX,
    15.408639999999998 * scale + translationY,
  );

  path.cubicTo(
    15.781865736061258 * scale + translationX,
    16.505709293076933 * scale + translationY,
    13.90201897134011 * scale + translationX,
    17.064351692442767 * scale + translationY,
    11.991210510792405 * scale + translationX,
    17.00044072417175 * scale + translationY,
  );

  path.cubicTo(
    10.081942908835412 * scale + translationX,
    17.052519982801858 * scale + translationY,
    8.205734649241464 * scale + translationX,
    16.494957813222502 * scale + translationY,
    6.634770213901656 * scale + translationX,
    15.40864049676682 * scale + translationY,
  );

  path.cubicTo(
    6.21193908673343 * scale + translationX,
    15.053072622669708 * scale + translationY,
    5.580907290478133 * scale + translationX,
    15.10766860464853 * scale + translationY,
    5.225428647319587 * scale + translationX,
    15.530574706175614 * scale + translationY,
  );

  path.cubicTo(
    4.8699500041610415 * scale + translationX,
    15.953480807702695 * scale + translationY,
    4.924679087317027 * scale + translationX,
    16.584501074089065 * scale + translationY,
    5.3476601599015385 * scale + translationX,
    16.939890506523305 * scale + translationY,
  );

  path.cubicTo(
    7.274337831498222 * scale + translationX,
    18.34060467726302 * scale + translationY,
    9.610052502944734 * scale + translationX,
    19.065045204729376 * scale + translationY,
    11.991210411900731 * scale + translationX,
    19.000440652669333 * scale + translationY,
  );

  path.cubicTo(
    14.372369830819796 * scale + translationX,
    19.0650400000473 * scale + translationY,
    16.708086302488695 * scale + translationX,
    18.340600004668715 * scale + translationY,
    18.63476926992107 * scale + translationX,
    16.93988933632361 * scale + translationY,
  );

  path.cubicTo(
    19.05747555820037 * scale + translationX,
    16.584428717636477 * scale + translationY,
    19.1120517065624 * scale + translationX,
    15.953626162472919 * scale + translationY,
    18.756679085982398 * scale + translationX,
    15.530846193967406 * scale + translationY,
  );

  path.cubicTo(
    18.4013064654024 * scale + translationX,
    15.108066225461895 * scale + translationY,
    17.770515435919286 * scale + translationX,
    15.053357024274675 * scale + translationY,
    17.34766051871613 * scale + translationX,
    15.40864046073707 * scale + translationY,
  );

  path.close();

  path.moveTo(
    17.991210000000002 * scale + translationX,
    7.0004399999999976 * scale + translationY,
  );

  path.cubicTo(
    17.725945651968388 * scale + translationX,
    7.00028574994551 * scale + translationY,
    17.47150227365602 * scale + translationX,
    7.105593138353682 * scale + translationY,
    17.28393251336043 * scale + translationX,
    7.293162898649271 * scale + translationY,
  );

  path.cubicTo(
    17.09636275306484 * scale + translationX,
    7.480732658944861 * scale + translationY,
    16.99105536465667 * scale + translationX,
    7.7351760372572285 * scale + translationY,
    16.99120934474283 * scale + translationX,
    8.000439691467193 * scale + translationY,
  );

  path.lineTo(
    16.991210000000002 * scale + translationX,
    12.000439999999998 * scale + translationY,
  );

  path.cubicTo(
    16.991210000000002 * scale + translationX,
    12.55272474983079 * scale + translationY,
    17.43892525016921 * scale + translationX,
    13.000439999999998 * scale + translationY,
    17.991210000000002 * scale + translationX,
    13.000439999999998 * scale + translationY,
  );

  path.cubicTo(
    18.543494749830796 * scale + translationX,
    13.000439999999998 * scale + translationY,
    18.991210000000002 * scale + translationX,
    12.55272474983079 * scale + translationY,
    18.991210000000002 * scale + translationX,
    12.000439999999998 * scale + translationY,
  );

  path.lineTo(
    18.991210000000002 * scale + translationX,
    8.000439999999998 * scale + translationY,
  );

  path.cubicTo(
    18.991363247700033 * scale + translationX,
    7.735176037257228 * scale + translationY,
    18.88605585929186 * scale + translationX,
    7.480732658944861 * scale + translationY,
    18.698486098996273 * scale + translationX,
    7.293162898649271 * scale + translationY,
  );

  path.cubicTo(
    18.510916338700678 * scale + translationX,
    7.105593138353682 * scale + translationY,
    18.25647296038831 * scale + translationX,
    7.000285749945511 * scale + translationY,
    17.991209306178348 * scale + translationX,
    7.000439730031674 * scale + translationY,
  );

  path.close();

  canvas.drawPath(path, paint);
}