Vivek, un Ingeniero Senior de Android, y Mert, nuestro Gerente del Equipo de SDK, profundizan en cómo Veriff creó nuestro plugin personalizado de Flutter para nuestros diferentes productos móviles que ofrecemos a nuestros clientes.
En esta publicación, compartiremos nuestra experiencia en el desarrollo de un plugin personalizado de Flutter para los productos móviles de Veriff.
Flutter es el kit de herramientas de interfaz de usuario de Google para crear aplicaciones bellas y compiladas de forma nativa para móviles, web, escritorio, y dispositivos integrados desde una única base de código.
Los plugins de Flutter son paquetes Dart que contienen una API escrita en el lenguaje Dart que combina múltiples implementaciones específicas de plataforma. Los plugins pueden escribirse para Android (Kotlin o Java), iOS (Swift u Objective-C), web, macOS, Windows o Linux, o cualquier combinación de estos.
Los paquetes de Flutter son módulos que contienen solo código Dart. Los plugins de Flutter, por otro lado, son paquetes con una diferencia. Los plugins contienen tanto código Dart como código específico de la plataforma (Kotlin, Swift, etc.). Puedes crear un plugin de Flutter con el siguiente comando:
Consulta la documentación oficial de Flutter para obtener más información sobre cómo crear un paquete Dart.
La estructura de un plugin de Flutter tiene estas carpetas:
Además de estas carpetas, también habrá algunos archivos obligatorios como:
El plugin de Flutter necesitará comunicarse con la plataforma nativa correspondiente. En lugar de usar generación de código o reflexión para la comunicación, Flutter utiliza un simple paso de mensajes a través de un canal para lograr la comunicación desde y hacia las plataformas nativas. Puedes usar un MethodChannel desde el lado de Flutter para comunicarte con las plataformas nativas que pueden ser recibidas usando un FlutterMethodChannel en iOS y un MethodChannel en Android. Una cosa importante a tener en cuenta es que, aunque Flutter envía llamadas de mensaje de forma asincrónica, las invocaciones de métodos del canal deben hacerse en el hilo principal de la plataforma.
Alternativamente, si se siente cómodo usando solo Objective-C para iOS y Java para Android, también podría considerar usar el paquete de Flutter Pigeon para enviar mensajes estructurados y seguros en cuanto a tipos utilizando generación de código.
El MethodChannel de Flutter utiliza un códec de mensajes estándar y envía de manera eficiente valores simples similares a JSON como int, double, string, list, map, etc. La lista completa de tipos admitidos y sus respectivos tipos de plataforma convertidos se puede encontrar aquí.
La lista de tipos de datos soportados y su conversión equivalente a plataforma en el momento de escribir esto es la siguiente.
Para fines de depuración, Flutter proporciona herramientas.
Puedes usar flutter doctor para verificar todas las herramientas instaladas para Flutter o <em>flutter analyze -d <IDENTIFICACIÓN></em> para analizar tu código fuente. Ten en cuenta que debes reemplazar IDENTIFICACIÓN con la identificación del dispositivo con el que estás depurando.
Puedes ejecutar la aplicación de ejemplo con tu plugin ejecutando este comando:
Dependiendo del tipo de dispositivo (Android/iOS) conectado a tu computadora, ejecutará la versión de la plataforma correspondiente.
Una vez que tu plugin esté listo y probado, deberá publicarse en pub.dev para que otros desarrolladores puedan usarlo en sus proyectos. Antes de publicar, debes asegurarte de que tus archivos pubspec.yaml, README.md y CHANGELOG.md estén completos correctamente. Algunos campos para verificar dos veces en el archivo pubspec.yaml son:
Para publicar el plugin, necesitas una cuenta de desarrollador en pub.dev. Puedes hacer una cuenta personal o puedes hacer una cuenta verificada para un dominio. Los pasos para crear una cuenta verificada se pueden encontrar aquí. Una vez que hayas completado los archivos adicionales requeridos y hecho una cuenta de desarrollador, estarás listo para publicar.
Un aspecto importante sobre la publicación de un plugin es que la publicación no es reversible. Esto es para asegurarse de que los desarrolladores que dependen de tus builds no tengan que lidiar con un build roto si despublicas tu plugin. Por lo tanto, la política de pub.dev no permite despublicar tus plugins.
Dado que la publicación no es reversible, necesitas hacer una prueba de publicación para ver que todo esté listo para publicar, para revisar si todo es correcto sin necesidad de publicar realmente. Puedes hacer una prueba de publicación ejecutando este comando:
Una vez que hayas hecho una prueba de publicación y confirmado que todo es correcto, puedes hacer la publicación real ejecutando el comando de publicación:
Una vez que ejecutes el comando de publicación, Flutter registrará un enlace en tu terminal para iniciar sesión en tu cuenta de pub.dev, y tendrás que hacer clic en ese enlace y completar la autenticación a través de tu navegador. Una vez que estés conectado y autorizado, tu plugin será publicado y en 10-20 minutos estará accesible para desarrolladores de terceros.
🎉 Felicitaciones, has publicado tu plugin de Flutter
Una vez que hayas publicado tu plugin, puedes ver la puntuación del plugin que obtuvo desde la página del plugin en pub.dev. La puntuación del plugin se calcula considerando diferentes criterios como la documentación, seguir las convenciones de dart, etc. Junto con la puntuación, también recibirás consejos sobre cómo mejorar la puntuación. Se recomienda encarecidamente que intentes mejorar tu puntuación tanto como sea posible.
Es posible que desees automatizar la publicación de tus plugins, especialmente desde tu pipeline CI/CD. Para hacer eso, necesitas crear un archivo en la siguiente ruta en tu entorno CI/CD ~/.pub-cache/credentials.json con el siguiente contenido:
Reemplaza accessToken, refreshToken, tokenEndpoint y expiration con tus valores correspondientes.
Puedes encontrar los valores en el archivo ~/.pub-cache/credentials.json en tu computadora después de publicar por primera vez. Y sí, desafortunadamente esto significa que tienes que hacer la primera publicación manualmente desde tu computadora para obtenerlos.
Una vez que hayas creado el archivo credentials.json en tu entorno CI, puedes ejecutar el siguiente comando desde tu CI/CD para hacer que la publicación se realice automáticamente sin la solicitud de iniciar sesión manualmente:
Vivekanandan A S - Ingeniero Senior de Android
Mert Çelik - Gerente del Equipo SDK