Abrir Flutter app desde Whatsapp como tarea independiente

En android, existe la posibilidad de abrir aplicaciones pulsando una url, previamente vinculada con nuestra app desde el AndroidManifest.xml. Se realiza de esta manera:

<intent-filter>
    <category android:name="android.intent.category.BROWSABLE" />
    <data
        android:host="www.miweb.es"
        android:pathPrefix="/app"
        android:scheme="http" />
</intent-filter>

Con estas líneas agregadas a nuestro AndroidManifest.xml conseguimos que cuando alguien pulse en un enlace en su móvil en el que aparezca: http://www.miweb.es/app, android buscará si nuesra app está instalada y abrirá la aplicacion. Si no lo está, navegará a traves del navegador predeterminado a esta URL, en la cual podemos tener publicado lo que queramos, como por ejemplo, ofrecer la descarga de nuestra app.

Importante saber que la etiqueta «pathPrefix» indica la ruta a la que nos referimos, ya que si pulsan en una URL de nuestra página que no tenga este patrón (por ejemplo: http://www.miweb.es/contacto), no intentará abrir nuestra app, abrirá el navegador.

Lo que ocurre por defecto en las aplicaciones desarrolladas con Flutter es que, cuando pulsamos nuestro enlace y la app se abre, se abre dentro de Whatsapp (o de la app desde la que hemos pulsado la URL). Esto deriva en que si Whatsapp queda en background o lo cerramos, nuestra aplicación también se cierra o entra en suspensión y cuando volvemos a ella, se reinicia y perdemos los datos que estuvieramos gestionando.

Esto se soluciona también modificando nuestro AndroidManifest.xml. Hay que sustituir:

android:launchMode="singleTop"

Por:

android:launchMode="singleTask" 

Esperamos que os sirva de ayuda. Si tenéis mas dudas sobre Flutter o programación en general, no dudéis en escribir en los comentarios.