To implement fading in an image, consider using the
FadeInImage widget, which applies a gradual
opacity using the GPU’s fragment shader.
For more information, check out the Opacity docs.

Clipping doesn’t call saveLayer() (unless
explicitly requested with Clip.antiAliasWithSaveLayer),
so these operations aren’t as expensive as Opacity,
but clipping is still costly, so use with caution.
By default, clipping is disabled (Clip.none),
so you must explicitly enable it when needed.

To create a rectangle with rounded corners,
instead of applying a clipping rectangle,
consider using the borderRadius property offered
by many of the widget classes.

Implement grids and lists thoughtfully

How your grids and lists are implemented
might be causing performance problems for your app.
This section describes an important best
practice when creating grids and lists,
and how to determine whether your app uses
excessive layout passes.