跳至主要內容

混合开发

Emilia Zhen大约 1 分钟flutter

flutter 与 Android 混合开发

在原生项目的上一级,创建flutter模块

flutter create -t module flutter_module

Java代码中调用Flutter Module

flutter.createView
FlutterFragment

Flutter 与 iOS 混合开发

OC代码中调用Flutter代码

  • 方式 1:FlutterViewController
  • 方式 2: FlutterEngin 混合开发中开启热重载
flutter attach -d <deviceId>

Flutter 与 iOS 混合开发中调用 Dart 代码

  1. 关闭模拟器正在运行的App
  2. AndroidStudio中通过图形化工具执行Flutter Attach
  3. Dart代码中打断点
  4. 在模拟器中启动之前关闭的App

Flutter 与 Native 通信

# BasicMessageChannel
        持续的双向通信,Flutter可以给Native发消息并且接收消息,Native也可以给Flutter发消息并且接收消息

# MethodChannel
        Flutter调用Native的方法,比如Flutter调用Native的相机,实现拍照功能

# EventChannel
        非持续性的双向通信,例如Flutter中监听Native中手机电量、网络状态的变化

Flutter中消息的传递完全是异步的

Flutter 与 iOS 通信

BasicMessageChannel

# iOS端
sendMessageHandler
接收Flutter端发来的消息

sendMessage
发送消息给Flutter端

# Flutter端
sendMessageHandler
接收Native端发来的消息

Future<T> send
传递数据给Native端,可以通过Future获取到Native端返回的结果

MethodChannel

# iOS端
setMethodCallHandler
接收处理Flutter传递过来的函数

# Flutter端
Future<T> invokeMethod
Flutter调用Native的方法
EventChannel

# iOS端
setStreamHandler

# Flutter端
Stream<dynamic> receiveBroadcastStream([dynamic arguments])
dynamic arguments 监听事件时向Native传递的数据