加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_安阳站长网 (https://www.0518zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

一篇看懂Android与Flutter之间的通信

发布时间:2019-06-26 01:16:52 所属栏目:业界 来源:Android高级架构师
导读:副标题#e# Flutter作为一种跨平台解决方案,经常会作为一个模块嵌入到原生Android与iOS应用中,Flutter与Android原生端的通信必不可少。所以本文就来讲述一下Android如何与flutter进行通信。 1、架构概述 消息通过平台通道在native(host)与flutter(client)

首先来看Android端的代码实现。

  1. public class MethodChannelPlugin implements MethodChannel.MethodCallHandler { 
  2.  private Activity activity; 
  3.  private MethodChannel channel; 
  4.  public static MethodChannelPlugin registerWith(FlutterView flutterView) { 
  5.  MethodChannel channel = new MethodChannel(flutterView, "MethodChannelPlugin"); 
  6.  MethodChannelPlugin methodChannelPlugin = new MethodChannelPlugin((Activity) flutterView.getContext(), channel); 
  7.  channel.setMethodCallHandler(methodChannelPlugin); 
  8.  return methodChannelPlugin; 
  9.  } 
  10.  private MethodChannelPlugin(Activity activity, MethodChannel channel) { 
  11.  this.activity = activity; 
  12.  this.channel = channel; 
  13.  } 
  14.  //调用flutter端方法,无返回值 
  15.  public void invokeMethod(String method, Object o) { 
  16.  channel.invokeMethod(method, o); 
  17.  } 
  18.  //调用flutter端方法,有返回值 
  19.  public void invokeMethod(String method, Object o, MethodChannel.Result result) { 
  20.  channel.invokeMethod(method, o, result); 
  21.  } 
  22.  @Override 
  23.  public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) { 
  24.  switch (methodCall.method) { 
  25.  case "send"://返回的方法名 
  26.  //给flutter端的返回值 
  27.  result.success("MethodChannelPlugin收到:" + methodCall.arguments); 
  28.  Toast.makeText(activity, methodCall.arguments + "", Toast.LENGTH_SHORT).show(); 
  29.  if (activity instanceof FlutterAppActivity) { 
  30.  ((FlutterAppActivity) activity).showContent(methodCall.arguments); 
  31.  } 
  32.  break; 
  33.  default: 
  34.  result.notImplemented(); 
  35.  break; 
  36.  } 
  37.  } 

(编辑:网站开发网_安阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!