Introducción a Flutter y la comunicación nativa | Autor: Dave Zhao | Junio de 2021
Flutter llama nativo
Primero, las siguientes funciones se implementan en flutter:
- Cree un MethodChannel y registre el nombre del canal, generalmente utilizado «Nombre / identidad del paquete» Como nombre del canal.
- Se pasó una llamada asincrónica Método de llamada.
A continuación, se implementan las siguientes funciones en nativo (android):
- Cree un MethodChannel con la misma cadena de registro que flutter.
- Implementación y configuración Establezca el controlador de llamadas al método.
- Devuelve el resultado para golpear el resultado.
Fluctuación de llamadas nativas
La implementación de código de Android llamando a flutter es similar a la implementación de código de Flutter llamando a Native (Android), a través de Método de llamada.
Flutter se da cuenta principalmente del registro Controlador de llamadas de método:
Se utiliza para enviar eventos de notificación de nativo a flutter. A diferencia de MethodChannel, EventChannel es una llamada unidireccional de nativo a flutter. La llamada es multidifusión (uno a varios).
Parte de aleteo
- Cree EventChannel, utilizando «nombre / identificador del paquete» como cadena de registro.
- Al registrar al oyente Suscripción de transmisión escuchar,entre ellos Cancelar error El parámetro indica si finalizar automáticamente la supervisión cuando se encuentra un error.
Parte nativa
- Se aprobó el registro del controlador EventChannel.setStreamHandler.
- Receptor de eventos Envía notificaciones de eventos.
- llamada EventSink.endOfStream Al final del aviso, en este momento cancelar Sera llamado.
- Si es necesario, puede enviar notificaciones de error de las siguientes formas EvnetSink.errorY aleteo StreamSubscription.onError Será notificado.
Soy yosegundo Usado para enviar un mensaje entre flutter y nativo, una parte envía un mensaje a la otra parte y responde después de recibir el mensaje.
Flutter envía mensajes al nativo
Primero, las siguientes funciones se implementan en flutter:
- Cree BasicMessageChannel y utilice «nombre / identificador del paquete» como cadena de registro.
- Enviando un mensaje BasicMessageChannel.send
Además del nombre del canal, también se debe especificar la creación de MessageChannel Codificación:
BasicMessageChannel(String name, MessageCodec<T> codec)
A continuación, se implementan las siguientes funciones en nativo (android):
- Cree un BasicMessageChannel con la misma cadena de registro que flutter.
- Registrarse Procesador de mensajes A través de setHandler.
- Después de recibir el mensaje MessageHandler.onMessage Devolver la llamada, responder para responder.
Native envía un mensaje a flutter
Primero, las siguientes funciones se implementan en nativo (Android):
- Cree BasicMessageChannel.
- Enviando un mensaje BasicMessageChannel.send
A continuación, se implementan las siguientes funciones en flutter:
- Cree BasicMessageChannel, utilizando «nombre / identificador del paquete» como cadena de registro.
- Registrarse Procesador de mensajes A través de setHandler.
- Después de recibir el mensaje Procesador de mensajes,respuesta.