Flutter 之原生混合开发
Flutter 支持使用平台通道(platform channels)进行原生混合开发。以下是一个简单的例子,展示了如何从Flutter发送消息到Android原生代码,并返回结果。
首先,在Flutter端创建一个方法来发送消息:
// lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// 此方法用于通过平台通道发送消息
Future<String> sendMessageToNative() async {
final String result = await methodChannel.invokeMethod('getMessage');
return result;
}
// 定义MethodChannel
static const MethodChannel methodChannel =
MethodChannel('com.example.flutter_plugin');
// ...
}
然后,在Android原生代码中,接收并处理消息:
// app/src/main/java/com/example/myapp/MainActivity.java
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import android.os.Bundle;
public class MainActivity extends FlutterActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 新建一个MethodChannel并设置通道名称
new MethodChannel(getFlutterView(), "com.example.flutter_plugin").setMethodCallHandler(
(call, result) -> {
// 判断方法调用
if (call.method.equals("getMessage")) {
// 在这里写下获取消息并处理的逻辑
String message = "Hello from native";
// 返回结果给Flutter
result.success(message);
} else {
result.notImplemented();
}
}
);
}
}
在这个例子中,我们创建了一个名为com.example.flutter_plugin
的MethodChannel,并在Android原生代码中设置了一个方法调用处理器。当Flutter端调用sendMessageToNative
方法并传递getMessage
字符串时,原生代码会接收到并可以执行相应的逻辑,然后将结果返回给Flutter。
评论已关闭