En Dart, los deferred imports (importaciones diferidas) permiten cargar bibliotecas solo cuando se necesitan en lugar de hacerlo al inicio del programa. Esta técnica es útil para reducir el tiempo de carga inicial de las aplicaciones y optimizar el rendimiento, especialmente en aplicaciones grandes o con muchos módulos.
Las importaciones diferidas se declaran utilizando la palabra clave deferred as
junto con el nombre del paquete o biblioteca que deseas cargar. A diferencia de las importaciones normales, las bibliotecas diferidas no se cargan inmediatamente; en cambio, se cargan solo cuando se invoca explícitamente, lo cual es ideal para optimizar el uso de memoria y el tiempo de ejecución.
Para cargar una biblioteca diferida, se usa el método loadLibrary()
, que devuelve un Future
que se completa cuando la biblioteca está completamente cargada.
// Importación diferida de la biblioteca 'calculos.dart'
import 'calculos.dart' deferred as calculos;
void main() async {
print("Inicio de la aplicación");
// Cargar la biblioteca diferida
await calculos.loadLibrary();
// Usar una función de la biblioteca después de cargarla
var resultado = calculos.sumar(4, 5);
print("Resultado de la suma: $resultado");
}
En este ejemplo, la biblioteca calculos.dart
no se carga al iniciar la aplicación. Solo se carga cuando se llama a calculos.loadLibrary()
. Luego, se puede acceder a la función sumar
como cualquier función importada.
1. Optimización de carga: Cargar partes de la aplicación solo cuando son necesarias, como en módulos o secciones de la aplicación que no se usan inmediatamente.
2. Reducir la carga inicial: Al reducir el tamaño de los datos que se cargan al inicio, se disminuye el tiempo de arranque, especialmente en aplicaciones móviles y web.
3. Cargar bibliotecas condicionalmente: Útil en situaciones donde el código necesita cargar ciertas funcionalidades bajo condiciones específicas.
await <biblioteca>.loadLibrary()
antes de acceder a cualquier función o clase en una biblioteca diferida.
Para más detalles, consulta la documentación oficial de Dart.
Jorge García
Fullstack developer