Cómo actualizar un proyecto o aplicación existente en Flutter

- 👤 Andrés Cruz

🇺🇸 In english

Si eres un desarrollador de aplicaciones móviles, es probable que hayas trabajado con Flutter, el popular framework de desarrollo de aplicaciones multiplataforma. 

A medida que Flutter evoluciona y se actualiza, es importante mantener las aplicaciones actualizadas para aprovechar las últimas características y mejoras y también para ir haciendo correcciones preventivas a medida que van lanzando nuevas versiones. 

En este artículo, exploraremos cómo actualizar una aplicación existente en Flutter y algunos consejos para hacerlo de manera efectiva.

Actualizar un proyecto viejo de Flutter parece una tarea simple… hasta que te encuentras con pubs deprecated, Gradle explotando, incompatibilidades con Android o iOS, y errores de sintaxis que —siendo honestos— suelen ser lo de menos.
A mí ya me ha pasado más de una vez: la app funcionaba perfecta hace un par de años y de pronto ni compila. Por eso armé esta guía práctica, completa y actualizada para que puedas migrar cualquier proyecto Flutter sin sufrir más de lo necesario.

1. Verifica la Versión Actual de Flutter

Antes de comenzar, verifica la versión actual de Flutter en tu proyecto. Abre una terminal y ejecuta el siguiente comando:

flutter --version

Esto te mostrará la versión actual de Flutter instalada en tu sistema. Si no tienes la última versión, actualiza Flutter ejecutando:

flutter upgrade

Si el proyecto lleva tiempo sin tocarse, es normal que venga de versiones antiguas (1.x, 2.x…). Eso trae como consecuencia decenas de advertencias y cambios incompatibles.

En mi caso, los proyectos antiguos suelen romperse apenas ejecuto el primer flutter run.

Estado de tus dependencias y pubs

Aquí aparecen los problemas más frecuentes: paquetes deprecated, duplicados, plugins abandonados o versiones que no soportan la plataforma actual.

Yo suelo ver errores del estilo:

  • "X package is deprecated"
  • "Incompatibility with Android embedding v2"
  • "Plugin doesn't support current Gradle version"

A veces basta actualizar, otras veces toca reemplazar el paquete porque el autor lo abandonó.

Cambios mayores entre versiones (breaking changes)

Flutter tiene períodos en los que hace cambios grandes: migración a null safety, Material 3, renombrado de widgets, cambios en TextTheme, etc.

Revisar anticipadamente qué APIs cambiaron evita horas de pruebas ciegas.

2. Actualizar Flutter SDK y Actualiza el Archivo pubspec.yaml

Lo primero, es actualizar nuestro entorno a la última versión de Flutter:

$ flutter upgrade
$ flutter doctor

El archivo pubspec.yaml es fundamental para gestionar las dependencias de tu aplicación. Abre este archivo en tu editor de código y busca la sección dependencies. Aquí es donde se especifican las bibliotecas y paquetes utilizados en tu proyecto.

3. Ejecuta flutter pub get

Después de actualizar las dependencias en el archivo pubspec.yaml, ejecuta el siguiente comando en la terminal:

flutter pub get

Esto descargará las últimas versiones de las dependencias y las integrará en tu proyecto, también si empleas VSC puedes abrir el mencionado archivo y presionar Control + S.

Como recomendación, puedes quitar las versiones a todas las dependencias para que descargue las últimas versiones de los paquetes que deseas actualizar.

Actualiza las Dependencias: Verifica si hay actualizaciones disponibles para las dependencias de tu aplicación. Puedes consultar la página de pub.dev para verificar las últimas versiones de los paquetes que utilizas. Actualiza las versiones en tu archivo pubspec.yaml según sea necesario, este paso es opcional dependiendo de como desarrolles tus aplicaciones en Flutter, si no colocas una versión para los paquetes, no tienes que hacer nada en este paso.

Si quieres hacerlo paso a paso, para ver las versiones disponibles:

$ flutter pub outdated

Para actualizar:

$ flutter pub upgrade --major-versions

 

4. Verifica la Compatibilidad

Antes de implementar los cambios, verifica que tu aplicación siga siendo compatible con las nuevas versiones de las dependencias. Ejecuta tu aplicación y realiza pruebas exhaustivas para asegurarte de que todo funcione como se espera.

Usualmente este paso no es muy necesario ya que si existe un cambio en alguno de los paquetes, la app simplemente lo se ejecutará en el emulador y te indicará claramente cual es el error que esta sucediendo. Así que, que la aplicación se lance de manera exitosa por el emulador, es buena señal que podría indicar que la app no sufrió ningún problema al momento de actualizar los paquetes, aun así, es buena idea ejecutar las pruebas unitarias o simplemente probar la app.

5. Actualiza el Código

Si hay cambios específicos en tu código relacionados con las actualizaciones, asegúrate de implementarlos correctamente. Esto puede incluir ajustes en la sintaxis, actualizaciones de métodos o cambios en la lógica de tu aplicación; por ejemplo:

  • FlatButton → TextButton
  • Theme.of(context).textTheme.title → titleMedium
  • Migración de estilos Material 3
  • Clases movidas a nuevos imports

Migrar a null safety en un proyecto viejo

Si el proyecto viene de antes de null safety, ejecuta:

$ dart migrate

Cómo actualizar Gradle plugin y gradle-wrapper

Este es uno de los puntos que más se rompen.

  • Plugin de Android moderno
  • Gradle compatible
  • MinSdk y targetSdk alineados

Si usas un plugin viejo, Android Studio lanzará errores incluso antes de compilar.

Errores frecuentes al compilar en Android

Algunos que seguro verás:

  • "Unsupported class file major version" → Java incorrecta
  • "You are applying Flutter's Gradle plugin imperatively" → Proyecto muy viejo
  • "This version of Gradle is not supported" → wrapper obsoleto

Lo que hago siempre:

cd android && ./gradlew clean && ./gradlew build

Si algo falla aquí, es la configuración nativa, no Flutter.

Comprobaciones finales y build de producción

Limpieza del proyecto y reconstrucción completa

Antes del build final:

$ flutter clean
$ flutter pub get
$ flutter build apk --release

Actualizar firma de apps y keystore si es necesario

Si el keystore está perdido o corrupto, toca generar uno nuevo:

keytool -genkey -v -keystore ~/upload-keystore.jks \
-keyalg RSA -keysize 2048 -validity 10000 -alias upload

Checklist final antes de actualizar

  • Dependencias actualizadas
  • Gradle y Java correctos
  • App abre en Android y iOS
  • Todos los warnings críticos resueltos
  • Build release generado sin errores

Preguntas frecuentes sobre actualizar proyectos Flutter

  • ¿Por qué un proyecto Flutter viejo no compila?
    • Casi siempre por incompatibilidades entre Flutter/Gradle/Java o un plugin abandonado.
  • ¿Cómo saber qué dependencia está causando problemas?
    • Ejecuta flutter pub outdated y revisa el error del build en Android: suele señalarla directamente.
  • ¿Dart fix arregla todo?
    • No. Arregla el 70%. El resto es manual.
  • ¿Es necesario migrar a null safety?
    • Sí. No hacerlo impedirá compilar en nuevas versiones de Flutter.

✅ Conclusión

Actualizar un proyecto Flutter no es difícil… pero tampoco es un clic mágico.

Con pubs deprecated, incompatibilidades nativas y cambios grandes entre versiones, más de una vez me he visto reparando cosas que parecían sencillas pero terminaban fallando en Android sin explicación.

Aun así, siguiendo una ruta ordenada —SDK → dependencias → código → Android/iOS → build— puedes migrar cualquier proyecto, por más viejo que sea.

Acepto recibir anuncios de interes sobre este Blog.

Mencionamos unos sencillos pasos para actualizar los paquetes que corresponden a tu aplicación en Flutter y con esto, actualizar un proyecto en Flutter.

| 👤 Andrés Cruz

🇺🇸 In english