If non-null, the value from the Animation is multiplied with the opacity of each image pixel before painting onto the canvas.
This is more efficient than using FadeTransition to change the opacity of an image, since this avoids creating a new composited layer. Composited layers may double memory usage as the image is painted onto an offscreen render target.
final Animation<double>? opacity;