fluter与android通信,Flutter与原生android进行数据交互

背景

flutter现在无疑是移动端跨平台最火的ui框架之一(个人理解他只是一款框架),有些功能免不了会调用原生功能,如摄像头、指纹认证等底层功能。本次主要讲解是flutter与原生android互相通信实现方式。

1.编写flutter公共页面

数据双向通信主要有以下实现步骤:

(1)发送通道定义:

static const receive = const EventChannel('com.gxx.receive/plugin');

//跳转到原生Activity界面

Future _statrtToNativeActivity() async {

String result = await sendToNative.invokeMethod('startToEditActivity');

}

// 通过插件将传递数据到原生界面

Future _sendDataToNative() async {

Map map = {"flutter": "我是flutter 传递过来的"};

String result = await sendToNative.invokeMethod('mapData', map);

print(result);

}

复制代码

(2)接收通道定义:

//接收来自本地的消息

static const receiveFromNative =const EventChannel('com.gxx.send/plugin');

//监听接收消息

StreamSubscription _streamSubscription;

复制代码

(3)在initState()方法中实例化数据接收监听

@override

void initState() {

super.initState();

//开启监听,通过原生界面将数据传递到flutter界面

if (_streamSubscription == null) {

_streamSubscription =

receiveFromNative.receiveBroadcastStream().listen((event) {

setState(() {

_currentCount = event;

print("ChannelPage: $event");

});

}, onError: (Object error) {

setState(() {

_currentCount = "计时器异常";

print(error);

});

});

}

}

复制代码

(4)在dispose()方法中取消息订阅通道

@override

void dispose() {

// TODO: implement dispose

super.dispose();

//取消监听

if (_streamSubscription != null) {

_streamSubscription.cancel();

}

}

复制代码

(6)整个完整代码如下:

import 'package:flutter/material.dart';

import 'package:flutter/services.dart';

void main() {

runApp(MyApp());

}

<

你可能感兴趣的:(fluter与android通信,Flutter与原生android进行数据交互)