How to Render Transparent Images with the Opacity Argument

If you need to show a semi-transparent image, use the opacity argument with AlwaysStoppedAnimation rather than adding a parent Opacity widget.

According to the docs, Opacity could apply the opacity to a group of widgets and therefore a costly offscreen buffer will be used.

How to Render Transparent Images Without the Opacity Widget
How to Render Transparent Images Without the Opacity Widget
// ❌ Works, but inefficient // Opacity uses a (costly) offscreen buffer for rendering ⚠️ Opacity( opacity: 0.5, child: Image.asset('assets/banner.png'), ) // ✅ Better for performance Image.asset( 'banner.png', opacity: const AlwaysStoppedAnimation(0.5), )

Note: the Image class also has color and colorBlendMode arguments that can be used to apply custom color filters:

// Same result as above Image.asset( 'assets/banner.png', color: Colors.white.withOpacity(0.5), colorBlendMode: BlendMode.modulate, )

To learn more about the Opacity widget and its alternatives, read the official docs:

Happy coding!

Want More?

Invest in yourself with my high-quality Flutter courses.

Flutter Foundations Course

Flutter Foundations Course

Learn about State Management, App Architecture, Navigation, Testing, and much more by building a Flutter eCommerce app on iOS, Android, and web.

Flutter & Firebase Masterclass

Flutter & Firebase Masterclass

Learn about Firebase Auth, Cloud Firestore, Cloud Functions, Stripe payments, and much more by building a full-stack eCommerce app with Flutter & Firebase.

The Complete Dart Developer Guide

The Complete Dart Developer Guide

Learn Dart Programming in depth. Includes: basic to advanced topics, exercises, and projects. Fully updated to Dart 2.15.

Flutter Animations Masterclass

Flutter Animations Masterclass

Master Flutter animations and build a completely custom habit tracking application.