Limpiar el canal de la plataforma entre Flutter y Android Java Native Code | por tuliomoreira77 | junio de 2021

En resumen, el principio de funcionamiento del canal de la plataforma es similar a Una especie Sistema de mensajes. Lo llamas desde flutter y pasas el nombre del método como una cadena y un objeto de parámetro. En el lado local, necesitas enrutar la cadena recibida por el nombre del método al método nativo correspondiente y enviarla de vuelta después de calcular el resultado Flutter end.
Pero el problema es que si su proyecto requiere muchas llamadas a métodos locales, terminará con un código como este:
Ahora imagine, si su aplicación tiene docenas de llamadas nativas, en algunos casos, necesita realizar una serialización y deserialización de objetos complejos (porque el canal Flutter no admite lo que necesita para pasar como una cadena de objetos complejos), y necesita manejar excepciones. Después de todo, terminas con un código sucio y propenso a errores.
Incluso si no se molesta en administrar una gran cantidad de ifs, puede encontrar problemas de subprocesos.por defecto Controlador de llamadas de método Se ejecutará en el subproceso de la interfaz de usuario, si el cálculo o la velocidad de comunicación es lenta, bloqueará el subproceso de la interfaz de usuario.Pero luego simplemente ejecute el código dentro Controlador de llamadas de método En un nuevo hilo, funcionará a las mil maravillas, ¿verdad? !No, después del cálculo, debe devolver el resultado al hilo de la interfaz de usuario como Resultado. Éxito (), Result.error () con Result.notImplemented () Debe ejecutarse en el hilo de la interfaz de usuario.
Si tiene diferentes clases (principio de responsabilidad única), y cada clase tiene métodos nativos para manejar sus llamadas, amenazas de excepciones y recibir y devolver objetos complejos (serialización y deserialización automáticas), el código tendrá una mejor legibilidad y menos propenso a errores, ¿verdad? ? Sí, diseñé una biblioteca para encapsular la lógica de llamada nativa y hacerla más concisa y fácil de usar.
La lógica es simple: las anotaciones pueden manejar los métodos llamados por la máquina, y la clase auxiliar usará algunas API de reflexión para obtener estos métodos dinámicamente, enrutar las llamadas de la máquina a los métodos correspondientes y analizar automáticamente los parámetros y las respuestas.
Este es un ejemplo de una clase que puede manejar llamadas nativas y cada método usa @ Método local Puede manejar llamadas de flutter.
Después de crear la clase, solo necesita registrarse y configurar el Flutter MethodCallHandler para redirigir la llamada a la clase auxiliar.
Y todo esto está hecho. Ahora puedes llamar a estos métodos desde flutter.
La biblioteca aún está en desarrollo y el código siempre puede ser mejor, así que si te gusta, no dudes en contribuir.
Me gustaría agradecerle si lee este artículo, este es mi primer artículo. Quiero disculparme de antemano por cualquier malentendido. No soy un hablante nativo de inglés.
¡Gracias y Saludos cordiales!