###### tags: `Flutter` `Migration` `Migración` `Migrate` `Null Safety` `Fix`
# Migrar flutter de 1.22.6 a 2.8.1 y 2.10.0
## Flutter 2.8.1 Instalado
### Proyecto en flutter 1.22.6
* Verificar los paquetes que tienen compatibilidad con ***null safety***
> En la consola correr --> `dart pub outdated --mode=null-safety`
* Aplicar ***Flutter fix***
>En la consola correr --> `dart fix --dry-run` para ver los cambios disponibles
En la consola correr --> `dart fix --apply` para aplicar todos los cambios
* Actualizar los paquetes a ***null safety***
> En la consola correr --> `dart pub upgrade --null-safety`
* Quitar todas las importaciones a paquetes que no se esten usando
* Migrar el proyecto
>En la consola Correr --> `dart migrate`
Si no se genera ningun error, verificar los cambios que se van a aplicar en el monitor web y aplicar los cambios.
* En **android/build.gradle** actualizar lo siguiente:
>Actualizar la version del pugin de kotlin --> `ext.kotlin_version = '1.6.10'`
Actualizar la version del pugin de grade --> `'com.android.tools.build:gradle:4.1.0'`
* En **android/app/build.gradle** actualizar lo siguiente
>`-compileSdkVersion 31`
`-minSdkVersion 21`
`-targetSdkVersion 31`
* En **android/gradle/gradle-wrapper.properties** actualizar lo siguiente
>`distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip`
#### Con esto la app deberia correr en la version 2.8.1 de flutter, si ya has corregido todas las advertencias o errores de null safety en tu codigo.
# Actualizar a flutter 2.10.0
* En la consola Correr el comando `Futter Upgrade`
* Agragar las siguientes lineas en el archivo **android/app/src/main/AndroidManifest.xml**
>-En todos los <activiti que contengan un <intent-filter
`<activity`
` android:name=".MainActivity"`
`android:launchMode="singleTop"`
`android:theme="@style/LaunchTheme"`
`**android:exported="true" --->>> Linea nueva**`
-Si aun no tenias habilitado el embedding 2, deberas poner estas lineas debajo del activity
`</activity>`
`<meta-data`
`android:name="flutterEmbedding"`
`android:value="2" />`
-Mofificar esta linea --> `android:name="io.flutter.app.FlutterApplication"`
por esta `android:name="${applicationName}"`
-- Si sale algun error, seguir los pasos descritos en este **[link](https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects)**
* Para crear la carpeta windows en el proyecto migrado de flutter 2.8.1 corren el comando `flutter create .` estando en la version 2.10.0
* Actualiza la version minima del sdk en el archivo **pubspec.yaml** a
`sdk: '>=2.16.0 <3.0.0'`
* Agrega `flutter_lints: ^1.0.0` en **dev_dependencies** para ver las correcciones de codigo mas recientres.
* Nuevamente Aplicar ***Flutter fix***
>En la consola correr --> `dart fix --dry-run` para ver los cambios disponibles.
-En la consola correr --> `dart fix --apply` para aplicar todos los cambios.
Habran cambios que ***Flutter Fix*** no arregla, tendras que corregir manualmente
### Listo, puedes ejecutar tu proyecto.
##### Esos son todos los pasos que yo segui para poder migrar mis aplicaciones de flutter 1.22.6 a flutter 2.10.0