700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Flutter 与 原生交互(Android) 安卓移动开发背景换色

Flutter 与 原生交互(Android) 安卓移动开发背景换色

时间:2023-10-06 16:32:08

相关推荐

Flutter 与 原生交互(Android) 安卓移动开发背景换色

*/

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(channelName);

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);

}

}

in";

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);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。