El Infierno de los WebView en Flutter

Siguiendo hablando un video un poco de temas un poco más personales, es decir, de mi trabajo, de lo que yo pienso quería hablarte algo sobre lo que yo título como la pesadilla de los webview por aquí en Flutter ya que algo tan sencillo o al menos yo lo veo desde ese enfoque nunca he hecho un navegador pero en términos generales Me atrevo decir que es sencillo hacer un navegador web para interpretar html que es por donde todos comenzamos es decir todos nosotros comenzamos usualmente en el desarrollo de software o al menos yo o la mayoría de la personas me atrevo a decir es creando un mundo con HTML que no es un lenguaje de programación y ya sabemos todo eso pero por más que sea estamos codificando algo entonces a partir de ahí javascript css vamos a un lenguaje de programación puede ser bueno ya iniciamos con javascript Pero podemos pasar a php python o Node directamente entonces por eso es que al menos mi vision es que siempre la parte de html CSS javascript es algo sencillo por lo tanto cuando lo queremos utilizar en este tipo de aplicaciones en este caso Recuerda que esta es la desarrollo libre que yo saqué una aplicación para Flutter que le sigo dando aquí ciertas características y obviamente como su núcleo es aquí html.

Porque es una página web una aplicación web y obviamente quiero aprovechar ese contenido para que lo puedas ver desde aquí fácilmente cuál es el detalle, fíjate que aquí yo siempre tengo algunas estructuras un poco extrañas en este caso esto es en Mac tal cual puedes ver estoy en una Mac Ya que en Windows o Android e inclusive iOS aunque no he lanzado la aplicación a la fecha se ve el contenido html así renderizado no Exactamente igual porque el tema de los estilos también es otra cosa. Voy a ir a una página esta la estoy trabajando todavía una página un poco más bonita por ejemplo Esta se ve bueno decente con su CSS y aquí estoy colocando directamente el html y es precisamente 

El horror de los webview en Flutter

Porque es una pesadilla trabajar con el Webview no entiendo por qué la gente de Google o de Flutter no implementa un webview que sea bueno que forme parte de la Api para precisamente hacer este tipo de operaciones ya que no creo que sea tan complicado ya en Android nativo existe en iOS nativo creo que también existe y por lo tanto no sé por qué no emplean o crear una Api interna para consumir ese web video nativo de cada uno de los sistemas operativos y en Windows no he creado así una aplicación activa en Windows ni tampoco en macos para eso estoy empleando Flutter, pero bueno debe haber algo también entonces es un poco como que lo que me parece bastante extraño y bueno como tú puedes suponer, utilizamos una extensión un punto un pub ya que esto viene siendo un poco como Flash en la cual instalamos flash luego a partir de ahí empezamos a instalar cositas paquetes y ahí nutrimos nuestro proyecto como nosotros queramos.

Muchos pub de webview para Flutter

Sí claro que sí cuál es el problema que bueno cuando vamos aquí el resultado es bastante horrible Esta es una página que encontré en la cual porque estoy volviéndome loco buscando un webview para Mac y realmente se me ha hecho bastante complicado entonces aquí tenemos en esta página encontré varios:

https://fluttergems.dev/webview/

Pero fíjate lo extraño del asunto o lo que me parece extraño este es para Android e iOS estos los utilice en el proyecto de DesarrolloLibre:

  webview_flutter: 4.7.0
  webview_windows:
  desktop_webview_window:
  # webview_all:

Otros me dieron errores y otros, otros dicen que funciona para Mac y no han sido probados; lo que quiero notar aquí es que tenemos muchísimos y varios no funcionan como se espera.

Cómico porque hay uno que dice que está abierto para todas las plataformas pero no lo ha testeado en MacOS

Otros los probe y dieron error al ejecutar la app o instalarlos.

Pero a lo que me refiero un poco es eso que se hace un poco pesadilla en ese sentido porque no hay uno como que estandarizado

Contenido HTML variable

Otro problema que existen en estos webview es que  tengo ese contenido html y muchos de ellos o no me lo muestran o no me queda claro o simplemente no lo manejan y no lo puedo renderizar a partir de un contenido html en este caso lo está renderizando a partir de una URL que es muy diferente a tener el contenido html que no sean una pagina web completa, es decir, que solamente sea un contenido HTML.; desde una app web, todo esto es muy fácil, al ser todo HTML, pero, desde un webview, con tantos plugins, tantas formas que tenemos de emplear el contenido HTML, es una verdadera pesadilla…

Usar un webview que procese HTML y una URL en todas las plataformas, una tarea imposible

Con todo lo expresado, puedes darte cuenta del porqué coloqué el titulo de esta publicación; y entender el problema de trasfondo de todo esto, algo tan sencillo como poder emplear contenido HTML en una app en Flutter ya sea mediante una URL o contenido HTML para diversos sistemas operativos se vuelve una tarea muy compleja.

Los plugins actuales o no funcionan en todas las plataformas, o solamente funcionan suministrada una URL e inclusive algunos dicen que funcionan en determinada plataforma peto te dicen que esta en beta, o que no ha sido testeado o mensajes similares.

Entiendo que si por ejemplo esto aquí tal cual colocas otra vez es otro paquete no era este exactamente si tú colocas que está disponible para maest como decía ese paquete y aquí también te aparecía y aquí te aparece al lado no testing Yo entiendo ve que el paquete nunca lo has utilizado en Mac eso es lo que yo entendería no sé si se refiere que no ha creado las pruebas de integración unitarias No lo sé yo entendería que nunca lo ha probado entonces bueno si ellos no lo han probado no entiendo cómo lo colocan aquí

 

En el enlace anterior, puedes ver los pubs para webview más comunes, aparte de lo mencionado, otro problema es que la documentación oficial es nula básicamente.

Conclusión

Te quería dar aquí un poquito mi perspectiva con todo esto y tu mismo saques tus propias conclusiones en base al desarrollo que quieras realizar, en el proyecto de desarrollo libre, necesito emplear el HTML, tanto a nivel de enlace, como de código HTML que quiera inyectar y tuve que realizar muchos desarrollos para simplemente renderizar un contenido HTML por lo mencionado antes, creando métodos personalizados con un monto de condicionales para devolver el resultado en base a la plataforma empleada y el webview soportado:

if(Platform.isAndroid){
}

- Andrés Cruz

In english

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz En Udemy

Acepto recibir anuncios de interes sobre este Blog.