• 接收

*/

void receiveMessage(){

messageChannel.setMessageHandler((message) async{

print(message);

return “is ok”;

});

}

MethodChannel

=============

flutter 调用 原生

1.实现插件

public class FlutterPluginTest implements MethodChannel.MethodCallHandler {

private static final String TAG = “FlutterPluginTest”;

/**

  • 插件标识

*/

public static String CHANNEL = “com.mmd.flutterapp/plugin”;

private static String ACTION_LOG = “log”;

private static String LOG_ARGUMENT = “data”;

static MethodChannel channel;

public static void registerWith(PluginRegistry.Registrar registrar) {

channel = new MethodChannel(registrar.messenger(), CHANNEL);

FlutterPluginTest instance = new FlutterPluginTest();

channel.setMethodCallHandler(instance);

}

@Override

public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {

/**

  • 通过 method 判断调用方法

*/

if (methodCall.method.equals(ACTION_LOG)) {

/**

  • 解析参数

*/

String text = methodCall.argument(LOG_ARGUMENT);

if (TextUtils.isEmpty(text)) {

/**

  • 错误返回

*/

result.error(“Data is Null”,null,null);

}else {

Log.d(TAG, "onMethodCall: "+text);

/**

  • 成功返回

*/

result.success(“is ok”);

}

}else {

result.notImplemented();

}

}

}

2.注册插件

public class MainActivity extends FlutterActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

/**

  • 注册插件

*/

FlutterPluginTest.registerWith(this.registrarFor(FlutterPluginTest.CHANNEL));

}

}

3.Flutter 端调用

import ‘package:flutter/services.dart’;

/**

  • 名称要和Java端一致

*/

const channelName = “com.mmd.flutterapp/plugin”;

const methodName = “log”;

const MethodChannel channel = MethodChannel(ch

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

annelName);

Future _testLog() async{

Map<String,String> map = {“data”:“Flutter Hello !”};

String result = await channel.invokeMethod(methodName,map);

print(result);

}

EventChannel

============

原生发送数据到Flutter

1.实现插件

public class FlutterPluginEventTest implements EventChannel.StreamHandler {

private static final String TAG = “FlutterPluginEventTest”;

public static String CHANNEL = “com.mmd.flutterapp/plugin”;

static EventChannel channel;

public static void registerWith(PluginRegistry.Registrar registrar) {

channel = new EventChannel(registrar.messenger(), CHANNEL);

FlutterPluginEventTest flutterPluginEventTest = new FlutterPluginEventTest();

channel.setStreamHandler(flutterPluginEventTest);

}

@Override

public void onListen(Object o, EventChannel.EventSink eventSink) {

new Thread(new Runnable() {

@Override

public void run() {

while (true) {

try {

Thread.sleep(1000);

eventSink.success(System.currentTimeMillis());

} catch (InterruptedException e) {

eventSink.error(“error”,“error”,e.getMessage());

}

}

}

}).start();

}

@Override

public void onCancel(Object o) {

Log.i(TAG, "onCancel: "+o);

}

}

2.注册插件

FlutterPluginEventTest.registerWith(this.registrarFor(FlutterPluginEventTest.CHANNEL));

3.Flutter 接收

import ‘dart:async’;

import ‘package:flutter/services.dart’;

/**

  • 名称要和Java端一致

*/

const channelName = “com.mmd.flutterapp/plugin”;

const EventChannel eventChannel = EventChannel(channelName);

StreamSubscription _subcription = null;

void init(void onEvent(String value),Function onError){

if(_subcription == null) {

_subcription = eventChannel.receiveBroadcastStream().listen(onEvent,onError: onError);

}

}

void dispose(){

Flutter 与 原生交互(Android),关于Android开发的面试经验总结相关推荐

  1. flutter和原生交互

    一.Flutter中使用Android Studio打开原生文件 选中Android目录--右键--选中flutter---Open for Editing in Android Studio 问题1 ...

  2. 阿衰java免费版_flutter plugin之路:flutter与原生交互传值OC/java版(一)

    说在前头:flutter虽然很牛掰,但是目前很多功能或者插件的实现其实还是需要通过原生来实现,然后通过flutter和原生的交互传值实现数据的交换. -本篇是flutter调用原生方法,然后原生执行完 ...

  3. 从100场腾讯面试中,抽出来经典面试题,腾讯技术职业等级丨C++后端开发丨Linux服务器开发丨面试经验丨面试总结

    从100场腾讯面试中,抽出来经典面试题,腾讯技术职业等级 视频讲解如下,点击观看: 从100场腾讯面试中,抽出来经典面试题,腾讯技术职业等级丨C++后端开发丨Linux服务器开发丨面试经验丨面试总结丨 ...

  4. 包红b2c模块 flutter与原生交互

    一.flutter提供的FlutterMethodChanel与原生(ios&android)进行交换 flutter与原生交互图: ios注册flutter调用通道 //oc 注册flutt ...

  5. 直接上干货!关于Android开发的面试经验总结,含小米、腾讯、阿里

    缘起 经过近十年的发展,Android技术优化日新月异,如今Android 10.0 已经发布,Android系统性能也已经非常流畅,可以在体验上完全媲美iOS.到了各大厂商手里,改源码.自定义系统, ...

  6. 膜拜大佬!关于Android开发的面试经验总结,面试必备

    优秀的战士需要出色的剑才能战斗.同样,在现代IT中,每个编码人员都需要最好的Android开发人员工具来提高他们的技能和效率.在Android应用程序开发这个残酷的竞争行业中,只有优秀的开发人员才能生 ...

  7. 3年Android开发工程师面试经验分享,先收藏了

    前言 程序员这个行业,日新月异,技术体系更新速度快,新技术新框架层出不穷,所有的技术都像是一个无底洞,当你学得越多就会发现不懂的越多,不懂的越多,需要学习的就更多. 因此,一旦选择了这个行业,就意味着 ...

  8. 膜拜大佬!关于Android开发的面试经验总结,面试总结

    优秀的战士需要出色的剑才能战斗.同样,在现代IT中,每个编码人员都需要最好的Android开发人员工具来提高他们的技能和效率.在Android应用程序开发这个残酷的竞争行业中,只有优秀的开发人员才能生 ...

  9. android面试宝典铁道出版社,关于Android开发的面试经验总结

    起由 搞了7年多Android了,前阵子面试了一家不大不小的公司.公司不大,面试官架子还不小,一副目中无人高高在上的样子,搞得好像我一万个想进他们公司.我进不了他们公司我全家都得喝西北风一样.搞得我是 ...

最新文章

  1. Codeforces #449 div2 C题
  2. 苹果向小型企业推出新付费订阅产品“Business Essentials”
  3. 企业微信接收消息服务器配置php,微信企业号配置及在公众号里获取用户信息
  4. idea改类名快捷键_IDEA使用之快捷键(default设置)
  5. Openlayers3中如何优雅的表示等值面
  6. 13讲项目实战内页滚动图效果实现
  7. 有个exe文件删不掉怎么办
  8. ASO选词估量该怎么做?aso怎么选词
  9. java将时间撮转成日期,Java将时间戳转换为日期
  10. 区块链的概念定义是什么
  11. 用Hadoop分析金庸人物关系网-实验报告
  12. 我在工作中是如何使用【Linux】的
  13. Intel 内部指令---AVX编程基础
  14. RTOS与linux区别
  15. 网络爬虫学习1 - 使用 requests.get(url) 抓取网页
  16. .net借助LumiSoft.dll获取邮件内容和附件
  17. 高数等价无穷小替换公式
  18. 搜狗微信下线了怎么获取公众号文章?手把手教你最新获取方式
  19. c语言匹配英文,正则英语_正则表达式怎么匹配英文句子_淘题吧
  20. tar打包保留文件的扩展属性

热门文章

  1. tomcat一键启停shell脚本
  2. Zookeeper读写性能测试
  3. 【转】CAN总线的终端电阻选择
  4. 【华为OD机试真题】密室逃生游戏(C++javapython)100%通过率 超详细代码注释 代码优化
  5. 使用QQ2013时连接Android物理设备Eclipse发现不了
  6. Linux企业运维人员最常用150个命令汇总
  7. 传输阻抗的原理与测量 --特性阻抗的定义
  8. (C语言)从键盘输入输入一个不大于5位的整数,判断位数,并逆序输出
  9. spring cloud学习,转载自纯洁的微笑
  10. Oracle 中SDE.ST_GEOMETRY类型的shape数据如何查看坐标点信息(WKT字符串)?