在获取手机电量,屏幕信息等,都需要flutter 调用原生实现,这部分flutter 官方已经帮我们实现好了,对于部分功能,需要自己实现, 步骤如下


# 创建一个 flutter 应用,使用 as 打开 android 目录, MainActivity 代码如下package com.example.flutter_app;import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;import java.util.Map;import io.flutter.app.FlutterActivity;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugins.GeneratedPluginRegistrant;public class MainActivity extends FlutterActivity {private static final String CHANNEL = "demo.gawkat.com/info";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);GeneratedPluginRegistrant.registerWith(this);new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(new MethodChannel.MethodCallHandler() {@Overridepublic void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {final Map<String, Object> arguments = methodCall.arguments();if (methodCall.method.equals("getMessage")) {result.success("Android say hi."+ ((String) arguments.get("from")));}
//        openWebPage("http://www.bitying.com");}});}public void openWebPage(String url) {Uri webpage = Uri.parse(url);Intent intent = new Intent(Intent.ACTION_VIEW, webpage);if (intent.resolveActivity(getPackageManager()) != null) {startActivity(intent);}}
}

# ios 端 appDelegate.m#include "AppDelegate.h"
#include "GeneratedPluginRegistrant.h"@implementation AppDelegate- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {[GeneratedPluginRegistrant registerWithRegistry:self];// Override point for customization after application launch.FlutterViewController* controller = (FlutterViewController*)self.window.rootViewController;FlutterMethodChannel* channel = [FlutterMethodChannelmethodChannelWithName:@"demo.gawkat.com/info"binaryMessenger:controller];[channel setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) {NSString *from = call.arguments[@"from"];if([@"getMessage" isEqualToString:call.method]) {NSString *messgae = @"IOS says greetings";NSString *returnMessage = [messgae stringByAppendingString:from];result(returnMessage);}}];return [super application:application didFinishLaunchingWithOptions:launchOptions];
}@end

# flutter 端 main.dart 编写如下代码static const platform = const MethodChannel('demo.gawkat.com/info');String _message = 'No message yet...';Future<String> _getMessage() async {var sendMap = <String, dynamic> {'from' : 'boy',};String value;try {value = await platform.invokeMethod('getMessage', sendMap);} catch(e) {print(e);}return value;}

flutter methodchannel调用原生方法,实现原生插件相关推荐

  1. html5调用原生android,h5调用IOS/安卓原生方法,原生调h5方法

    之前也总结过h5调用原生的方法,但是写的不全.像调完原生之后,原生往往会有返回值,或者根据返回值的不同回调h5的方法. 1.判断机型 getType() { var u = navigator.use ...

  2. android 引用非 android 工程,Unity3D调用android方法(非插件方式)

    关于Unity3D工程与android工程的转换与合并,请参考我的另外一篇博客,如果你对Unity3D工程加入到android工程的过程不熟悉,也请先看完下面这篇博客: android与Unity3D ...

  3. Unity3D调用android方法(非插件方式)

    关于Unity3Dproject与androidproject的转换与合并,请參考我的另外一篇博客.假设你对Unity3Dproject增加到androidproject的过程不熟悉.也请先看完以下这 ...

  4. unity无法调用android,Unity3D调用android方法(非插件方式)

    关于Unity3D工程与android工程的转换与合并,请参考我的另外一篇博客,如果你对Unity3D工程加入到android工程的过程不熟悉,也请先看完下面这篇博客: 下面,我们来说说本博客的终端, ...

  5. cordova 调用java_Cordova调用原生方法的插件的编写

    上一篇学习了Cordova官方提供插件的安装使用,其实Cordova对本地方法的调用并不是像WebView那样简单的调用,Cordova调用本地方法依赖于插件,今天学习一下插件怎么写. 插件编写通过类 ...

  6. flutter 调用原生安卓插件_Flutter 如何调用Android和iOS原生代码

    分3个大步骤: 1.在flutter中调用原生方法 2.在Android中实现被调用的方法 3.在iOS中实现被调用的方法 在flutter中调用原生方法 场景,这里你希望调用原生方法告诉你一个boo ...

  7. flutter 调用原生安卓插件_Flutter 如何调用Android和iOS原生代码-阿里云开发者社区...

    分3个大步骤: 1.在flutter中调用原生方法 2.在Android中实现被调用的方法 3.在iOS中实现被调用的方法 在flutter中调用原生方法 场景,这里你希望调用原生方法告诉你一个boo ...

  8. flutter实现调用原生安卓的高德地图导航功能(插件化)

    查看了高德地图flutter插件的文档,都没有能支持导航的功能,并且flutter的高德插件支持的功能特别少,没办法,只能使用安卓原生的导航,flutter去调用了,具体实现方式如下: 创建 Flut ...

  9. uniapp调用手机摄像头_uniapp原生插件开发之调用原生方法(android)

    需要实现的功能: 点击uniapp页面view,传递参数,调用android原生代码,然后原生代码处理数据,返回到uniapp页面 步骤 1.编写uniapp的视图页面 {{title}} 点击调用a ...

最新文章

  1. 数据结构与算法(C++)-- 算法分析
  2. 用户表如何区分普通用户和管理员_Gate.io 比特百科:什么是ETH 2.0及普通用户如何参与ETH 2.0质押挖矿...
  3. 每天工作6小时,月入过万,这个新职业火了
  4. 火狐浏览器不支持html5,这样写 火狐浏览器不支持?
  5. Java复习题及答案
  6. 【微信公众号】2、申请微信公众平台接口测试帐号
  7. 超声广义相干因子( Generalized Coherence Factor,GCF)波束合成仿真
  8. tom邮箱 服务器类型,Tom邮箱 - 帮助中心
  9. 3-11 三天打渔、两天晒网 - 实验7 简单的循环程序 - 《Python编程基础及应用实验教程》(高等教育出版社)
  10. 企业什么喜欢做电视看板,电视看板浏览网页的必备工具 电视看板浏览器 电视看板自动打开网页
  11. MySQL(九):InnoDB 表空间(Tables)
  12. 2021年中国驴行业存栏量延续下降走势,存栏基数降低使得驴肉供应减少,价格持续走强[图]
  13. unity 如何切换输入系统(Input System)
  14. Java新生代垃圾收集器
  15. 云课堂-java-jvm学习总结
  16. 阿里CEO张勇认为程序员不应限制年龄
  17. 雅可比迭代法的收敛性及谱半径(自己总结心得)
  18. EOS系列 - EOS-VM
  19. 积分制管理系统:创建组织架构
  20. CISCO路由器产品线

热门文章

  1. php获取局域网主机信息,PHP如何获取客户端的“局域网内”的IP地址?
  2. 长江流域9省2市可视化(不展示业务信息水质及真实断面)
  3. html页面缩小导航栏隐藏,HTML页面中如何隐藏 导航栏
  4. SEO软文写作关键词布局
  5. MySQL数据库知识点总结(基本篇)
  6. 关于媒体融合发展深度的一些思考
  7. UE4-地形材质图层创建及使用
  8. 教师信息管理系统源码(Access数据库)源码分享!
  9. CarSim仿真快速入门(二十二)—CarSim2022中设置IO写出
  10. springboot集成netty使用udp协议实现消息接收与转发