Usar paquetes
Cómo usar paquetes en tu aplicación de Flutter.
Flutter admite el uso de paquetes compartidos aportados por otros desarrolladores a los ecosistemas de Flutter y Dart. Esto permite construir rápidamente una aplicación sin tener que desarrollar todo desde cero.
Existing packages enable many use cases—for example,
making network requests (http),
navigation/route handling (go_router),
integration with device APIs
(url_launcher and
battery_plus),
and using third-party platform SDKs like Firebase
(FlutterFire).
Para escribir un nuevo paquete, consulta desarrollar paquetes. Para añadir activos, imágenes o fuentes, ya sea que estén almacenados en archivos o paquetes, consulta Añadir activos e imágenes.
Usar paquetes
#La siguiente sección describe cómo usar paquetes publicados existentes.
Buscar paquetes
#Los paquetes se publican en pub.dev.
La página de inicio de Flutter en pub.dev muestra los paquetes principales que son compatibles con Flutter (aquellos que declaran dependencias generalmente compatibles con Flutter), y admite la búsqueda entre todos los paquetes publicados.
La página Flutter Favorites en pub.dev enumera los plugins y paquetes que han sido identificados como paquetes que primero deberías considerar usar al escribir tu aplicación. Para obtener más información sobre lo que significa ser un Flutter Favorite, consulta el programa Flutter Favorites.
También puedes explorar los paquetes en pub.dev filtrando por Android, iOS, web, Linux, Windows, macOS, o cualquier combinación de los mismos.
Añadir una dependencia de paquete a una aplicación usando flutter pub add
#
Para añadir el paquete english_words a una aplicación:
-
Usa el comando
pub adddesde el directorio del proyectoflutter pub add english_words
-
Importarlo
- Añade una instrucción
importcorrespondiente en el código Dart.
- Añade una instrucción
-
Detener y reiniciar la aplicación, si es necesario
- Si el paquete trae código específico de la plataforma
(Kotlin/Java para Android, Swift/Objective-C para iOS),
ese código debe compilarse en tu aplicación.
Hot Reload y Hot Restart solo actualizan el código Dart,
por lo que podría ser necesario un reinicio completo de la aplicación para evitar
errores como
MissingPluginExceptional usar el paquete.
- Si el paquete trae código específico de la plataforma
(Kotlin/Java para Android, Swift/Objective-C para iOS),
ese código debe compilarse en tu aplicación.
Hot Reload y Hot Restart solo actualizan el código Dart,
por lo que podría ser necesario un reinicio completo de la aplicación para evitar
errores como
Añadir una dependencia de paquete a una aplicación
#Para añadir el paquete english_words a una aplicación:
-
Depender de él
- Abre el archivo
pubspec.yamlubicado dentro de la carpeta de la aplicación, y añadeenglish_words: ^4.0.0bajodependencies.
- Abre el archivo
-
Instalarlo
- Desde la terminal: Ejecuta
flutter pub get.
O bien - Desde VS Code: Haz clic en Get Packages ubicado en el lado derecho de la cinta de opciones
en la parte superior de
pubspec.yamlindicado por el icono de Descarga. - Desde Android Studio/IntelliJ: Haz clic en Pub get en la cinta de opciones
en la parte superior de
pubspec.yaml.
- Desde la terminal: Ejecuta
-
Importarlo
- Añade una instrucción
importcorrespondiente en el código Dart.
- Añade una instrucción
-
Detener y reiniciar la aplicación, si es necesario
- Si el paquete trae código específico de la plataforma
(Kotlin/Java para Android, Swift/Objective-C para iOS),
ese código debe compilarse en tu aplicación.
Hot Reload y Hot Restart solo actualizan el código Dart,
por lo que podría ser necesario un reinicio completo de la aplicación para evitar
errores como
MissingPluginExceptional usar el paquete.
- Si el paquete trae código específico de la plataforma
(Kotlin/Java para Android, Swift/Objective-C para iOS),
ese código debe compilarse en tu aplicación.
Hot Reload y Hot Restart solo actualizan el código Dart,
por lo que podría ser necesario un reinicio completo de la aplicación para evitar
errores como
Eliminar una dependencia de paquete de una aplicación usando flutter pub remove
#
Para eliminar el paquete english_words de una aplicación:
-
Use the
pub removecommand from inside the project directoryflutter pub remove english_words
La pestaña Installing, disponible en cualquier página de paquete en pub.dev, es una referencia útil para estos pasos.
Para ver un ejemplo completo, consulta el ejemplo de english_words a continuación.
Resolución de conflictos
#Supón que quieres usar some_package y
another_package en una aplicación,
y ambos dependen de url_launcher,
pero en versiones diferentes.
Eso causa un conflicto potencial.
La mejor manera de evitar esto es que los autores de los paquetes utilicen
rangos de versiones
en lugar de versiones específicas al
especificar las dependencias.
dependencies:
url_launcher: ^5.4.0 # Good, any version >= 5.4.0 but < 6.0.0
image_picker: '5.4.3' # Not so good, only version 5.4.3 works.
Si some_package declara las dependencias anteriores
y another_package declara una dependencia compatible con
url_launcher como '5.4.6' o
^5.5.0, pub resuelve el problema automáticamente.
Las dependencias específicas de la plataforma en
módulos Gradle
y/o CocoaPods
se resuelven de manera similar.
Incluso si some_package y another_package
declaran versiones incompatibles para url_launcher,
es posible que en realidad utilicen url_launcher de
maneras compatibles. En esta situación,
el conflicto se puede resolver añadiendo
una declaración de anulación de dependencia al archivo
pubspec.yaml de la aplicación, forzando el uso de una versión en particular.
Por ejemplo, para forzar el uso de la versión 5.4.0 de url_launcher,
realiza los siguientes cambios en el archivo pubspec.yaml de la aplicación:
dependencies:
some_package:
another_package:
dependency_overrides:
url_launcher: '5.4.0'
Si la dependencia en conflicto no es un paquete en sí,
sino una biblioteca específica de Android como guava,
la declaración de anulación de dependencia debe añadirse a
la lógica de compilación de Gradle en su lugar.
Para forzar el uso de la versión 28.0 de guava, realiza los siguientes
cambios en el archivo android/build.gradle de la aplicación:
configurations.all {
resolutionStrategy {
force("com.google.guava:guava:28.0-android")
}
}
configurations.all {
resolutionStrategy {
force 'com.google.guava:guava:28.0-android'
}
}
CocoaPods no ofrece actualmente funcionalidad de anulación de dependencias.
Desarrollar nuevos paquetes
#Si no existe ningún paquete para tu caso de uso específico, puedes escribir un paquete personalizado.
Gestionar dependencias y versiones de paquetes
#Para minimizar el riesgo de colisiones de versiones,
especifica un rango de versiones en el archivo pubspec.yaml.
Versiones de paquetes
#Todos los paquetes tienen un número de versión, especificado en el
archivo pubspec.yaml del paquete. La versión actual de un paquete
se muestra junto a su nombre (por ejemplo,
consulta el paquete url_launcher), así
como una lista de todas las versiones anteriores
(consulta las versiones de url_launcher).
Para garantizar que la aplicación no falle cuando actualices un paquete, especifica un rango de versiones utilizando uno de los siguientes formatos.
-
Restricciones de rango: Especifica una versión mínima y máxima.
yamldependencies: url_launcher: '>=5.4.0 <6.0.0' -
Restricciones de rango usando la sintaxis de intercalado (caret): Especifica la versión que sirve como versión mínima inclusiva. Esto cubre todas las versiones desde esa versión hasta la siguiente versión principal.
yamldependencies: collection: '^5.4.0'Esta sintaxis significa lo mismo que la indicada en la primera viñeta.
Para obtener más información, consulta la guía de versiones de paquetes.
Actualizar dependencias de paquetes
#Al ejecutar flutter pub get
por primera vez después de añadir un paquete,
Flutter guarda la versión concreta del paquete que se encuentra en el archivo de bloqueo pubspec.lock
lockfile. Esto garantiza que obtengas la misma versión nuevamente
si tú, u otro desarrollador de tu equipo, ejecutan flutter pub get.
Para actualizar a una nueva versión del paquete,
por ejemplo para usar nuevas funciones de ese paquete,
ejecuta flutter pub upgrade
para recuperar la versión disponible más alta del paquete
que esté permitida por la restricción de versión especificada en
pubspec.yaml.
Ten en cuenta que este es un comando diferente de
flutter upgrade o flutter update-packages,
que actualizan Flutter en sí.
Dependencias de paquetes no publicados
#Los paquetes se pueden usar incluso si no están publicados en pub.dev. Para paquetes privados o paquetes que no estén listos para publicarse, están disponibles opciones de dependencia adicionales:
- Dependencia de ruta (path)
-
Una aplicación Flutter puede depender de un paquete usando una dependencia de ruta del sistema de archivos
path:. La ruta puede ser relativa o absoluta. Las rutas relativas se evalúan con respecto al directorio que contienepubspec.yaml. Por ejemplo, para depender de un paquete, packageA, ubicado en un directorio junto a la aplicación, usa la siguiente sintaxis:yamldependencies: packageA: path: ../packageA/ - Dependencia de Git
-
También puedes depender de un paquete almacenado en un repositorio Git. Si el paquete está ubicado en la raíz del repositorio, usa la siguiente sintaxis:
yamldependencies: packageA: git: url: https://github.com/flutter/packageA.git - Dependencia de Git usando SSH
-
Si el repositorio es privado y puedes conectarte a él usando SSH, depende del paquete utilizando la URL SSH del repositorio:
yamldependencies: packageA: git: url: git@github.com:flutter/packageA.git - Dependencia de Git en un paquete en una carpeta
-
Pub asume que el paquete está ubicado en la raíz del repositorio Git. Si ese no es el caso, especifica la ubicación con el argumento
path. Por ejemplo:yamldependencies: packageA: git: url: https://github.com/flutter/packages.git path: packages/packageAFinalmente, usa el argumento
refpara fijar la dependencia a una confirmación (commit), rama (branch) o etiqueta (tag) de git específica. Para más detalles, consulta Dependencias de paquetes.
Ejemplos
#Los siguientes ejemplos recorren los pasos necesarios para usar paquetes.
Ejemplo: Usar el paquete english_words
#El paquete english_words contiene unos pocos miles
de las palabras en inglés más utilizadas, además de algunas funciones de utilidad.
Para usar este paquete:
Crea un nuevo proyecto llamado
words_demo.Ejecuta
dart pub add english_wordspara añadir la dependencia.-
Abre
lib/main.darty reemplaza todo su contenido con:dartimport 'package:english_words/english_words.dart'; import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return const MaterialApp(home: DemoPage()); } } class DemoPage extends StatelessWidget { const DemoPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center(child: Text(generateWordPairs().first.asPascalCase)), ); } } Ejecuta la aplicación. El texto de la aplicación debería mostrar un par de palabras aleatorias en inglés.
Ejemplo: Usar el paquete url_launcher para iniciar el navegador
#El paquete de plugin url_launcher permite abrir
el navegador predeterminado en la plataforma móvil para mostrar
una URL dada, y es compatible con Android, iOS, web,
Windows, Linux y macOS.
Este paquete es un paquete de Dart especial llamado
paquete de plugin (o plugin),
que incluye código específico de la plataforma.
Para usar este plugin:
Crea un nuevo proyecto llamado
launchdemo.-
Abre
pubspec.yamly añade la dependenciaurl_launcher:yamldependencies: flutter: sdk: flutter url_launcher: ^5.4.0 -
Ejecuta
flutter pub geten la terminal, o haz clic en Get Packages get en VS Code. -
Abre
lib/main.darty reemplaza todo su contenido con lo siguiente:dartimport 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return const MaterialApp(home: DemoPage()); } } class DemoPage extends StatelessWidget { const DemoPage({super.key}); void launchURL() { launchUrl(Uri.parse('https://flutter.dev')); } @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: launchURL, child: const Text('Show Flutter homepage'), ), ), ); } } -
Ejecuta la aplicación (o deténla y reiníciala, si ya se estaba ejecutando antes de añadir el plugin). Haz clic en Show Flutter homepage. Deberías ver cómo se abre el navegador predeterminado en el dispositivo, mostrando la página de inicio de flutter.dev.
A menos que se indique lo contrario, la documentación de este sitio refleja Flutter 3.44.0. Página actualizada por última vez el 2026-05-05. Ver código fuente oreportar un problema.