Tabla de Contenido
Introducción
En esta oportunidad veremos sobre los widgets que administran activos (AssetBundle), los que podemos usar para mostrar imágenes (Imagen) y los de mostrar íconos (Icon).
AssetBundle
Con este widget podemos acceder a recursos, como imágenes y cadenas, que se pueden usar en una aplicación Flutter. El acceso a estos recursos es asíncrono para que se puedan cargar mejor cuando son de una red externa o desde los archivos locales para no bloquear la aplicación.
rootBundle
Es el paquete raíz de los recursos que se empaquetaron al compilar la aplicación. Para agregar recursos debe hacerse en el archivo pubspec.yaml en la sección assets dentro de Flutter.
name: my_app
flutter:
assets:
- assets/images/dash-fainting.gif
- assets/images/dashatars.png
Configuración
Debemos agregar la configuración anterior, además de eso se deben crear las carpetas correspondientes, es decir, la carpeta assets en la raíz del proyecto y dentro la carpeta images que va a contener las imágenes.

Image
Es un widget que muestra una imagen. Tiene varios constructores para distintas formas de cargar la imagen.
Constructores
Image.neweste constructor se apoya en la claseImageProviderpara obtener una imagen.Image.assetse obtiene la imagen de unAssetBundlepor medio de una llave o clave.Image.networkcon este constructor podemos obtener una imagen por medio de una URL.Image.filecon este constructor podemos obtener una imagen de un archivo, utilizando la claseFile.Image.memorycon este constructor podemos obtener una imagen por medio de la claseUint8List.
Formatos
Los formatos de imagen admitidos son: JPE, PNG, GIF, GIF animado, WebP, WebP animado, BMP, WBPM.
Errores
En caso de que no encuentre la URL de la imagen o el formato es incorrecto, algún tipo de error, este widget nos brinda un método para nosotros manejar estas situaciones errorBuilder el cual devuelve un widget.
Ejemplo
Vamos a usar algunos de los constructores que tiene Image.
// Usando el constructor Image.new y la clase AssetImage
const Image(
height: 200,
width: 300,
image: AssetImage('assets/images/dash-fainting.gif'),
),
// Usando el constructor Image.asset
Image.asset(
'assets/images/dashatars.png',
height: 200,
width: 300,
),
// Usando el constructor Image.network
Image.network(
url,
height: 200,
width: 300,
),
const SizedBox(
height: 20,
),
// Usando el constructor Image.network con errorBuilder
Image.network(
errorBuilder: (context, error, stackTrace) => Text(
'$error',
style: const TextStyle(color: Colors.red),
),
formatInvalid,
),

Icon
Es un widget por medio del cual podemos hacer uso de íconos, apoyándose en la clase IconData donde se puede especificar el FontFamily. Inicialmente podemos usar los íconos predefinidos de Material Icons
. Para esto recordemos que es necesario tener activada la opción en el pubspec.yaml .
name: my_app
flutter:
uses-material-design: true
Ejemplo
Veremos unos ejemplos de íconos utilizando algunas de sus propiedades.
iconque es de tipoIconData, es el ícono como tal que queremos mostrar.colorel color que va tener el relleno del ícono.sizeel tamaño en pixeles del ícono.shadowssi queremos agregar un sombreado.
const Icon(
Icons.warning,
color: Colors.yellow,
size: 40.0,
shadows: [Shadow(blurRadius: 20, offset: Offset(10, 10))],
),
const Icon(
Icons.info,
color: Colors.blue,
size: 35.0,
),
const Icon(
Icons.cancel,
color: Colors.red,
size: 35.0,
),

Conclusión
Como pudimos ver para usar assets dentro de nuestro proyecto debemos hacer un par de configuraciones iniciales pero resulta ser bastante sencillo en la práctica, también tenemos opciones de acceder a recursos en la web, unos widgets bastante interesantes y con buen uso en las aplicaciones de Flutter.
¡Gracias por leer!
