这期内容当中小编将会给大家带来有关怎么在颤振调用Android原生代码,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强>分3个大步骤:强>
1。在颤振中调用原生方法
2。在Android中实现被调用的方法
3。在iOS中实现被调用的方法
<强>在颤振中调用原生方法强>
场景,这里你希望调用原生方法告诉你一个bool值,这个值的意义你可以随意定,这里表示的意义是是否是中国用户。
你可以在颤振中设计好要调用的方法名称,这里就叫
isChinese
引用>
<强>请注意:强>
在颤振中要调用原生代码需要通过通道传递消息,在颤振端就是MethodChannel。
所以我们这里的做法是,在颤振端创建一个自己命名的通道:
const platform =, const MethodChannel (“com.test/name");这里的名字。测试/名字你可以随便取。
讲解一下:
<强>你可能有疑问了,我们自作主张在颤振端创建的通道,怎么就能告诉Android和iOS端到底该怎么调用呢? 强>
你这个问题问得极好,这里啊先告诉你,等下我们还要分别在两端创建和这个通道同名的通道。
敲黑板了:
此时你知道了,我们要在三端分别有一个通道了吧,而且这三个通道是同名的,所以就能连接起来了。
不过这里还是先把颤振端的代码写完,然后我们再去分别设置Android和iOS端的代码吧.go !
我们在颤振中的代码如下:
Future, isEuropeUser (), async { ,//Native 通道 ,const platform =, const MethodChannel (“com.test/name");,//分析1 ,bool result =,假; ,try { 时间=result 才能;await platform.invokeMethod (“isChinese");,//分析2 ,},PlatformException catch (e), { 打印才能(e.toString ()); ,} ,return 结果; 以前,}> 还是分析一下:
分析1:创建一个我们自定义的通道。
分析2:用频道发送调用消息到原生端,调用方法是:isChinese
好了,颤振端相信你也觉得很简单了,接下来我们来看下安卓端怎么搞。
<强>在android中实现被调用的方法强>
我建议你在android工作室编写android端代码哦,因为这样有良好的代码提示和头文件引入。不过你要是有办法做到同样的效果,IDE俺啥都不在乎。
在颤振项目文件夹里的android文件夹中有一个MainActivity。java文件,不要告诉我你找不到啊。
我先告诉你等下就在MainActivity里注册我们的Android端插件。嘿嘿,现在先去写我们的Android端插件吧。
代码我一次贴出来了,反正也不多。
public class FlutterNativePlugin implements MethodChannel.MethodCallHandler { ,public static  String CHANNEL =,“com.test/name",//,分析1 ,static MethodChannel 渠道; ,private Activity 活动; ,private FlutterNativePlugin (Activity 活动),{ 时间=this.activity 才能;活动; ,} ,public static  void registerWith (PluginRegistry.Registrar 注册),{ channel 才能=,new MethodChannel (registrar.messenger(),通道); FlutterNativePlugin 才能;instance =, new FlutterNativePlugin (registrar.activity ()); channel.setMethodCallHandler才能(实例); ,} ,@Override ,public void  onMethodCall (MethodCall methodCall, MethodChannel.Result 结果),{,//分析,2 if 才能;(methodCall.method.equals (“isChinese")), { ,,boolean isChinese =,真的,, ,,result.success (isEuropean);,//,分析3 ,,} else {才能 ,,result.notImplemented (); ,,} ,} }<>强分析:强>
分析1:注意这里的插件名字要和颤振中的一样
分析2:onMethodCall这个方法是插件的回调,这里我们根据方法名isChinese判断调用的方法,然后实现我们的操作就行了。
分析3:这里直接返回了真的,因为这只是个例子,而你应该换成你自己的逻辑哦。
我们的插件写好了,回到MainActivity。java中进行注册。
看下代码:
public class MainActivity extends FlutterActivity { ,@Override ,protected void  onCreate (Bundle savedInstanceState), { ,super.onCreate (savedInstanceState); ,GeneratedPluginRegistrant.registerWith(这个); ,registerCustomPlugin(这个); ,} ,private void  registerCustomPlugin (PluginRegistry 注册),{ ,FlutterNativePlugin.registerWith (registrar.registrarFor (FlutterNativePlugin.CHANNEL)); ,} }怎么在颤振调用Android原生代码