Android端中MainActivity代碼
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugin.common.EventChannel;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
public class MainActivity extends FlutterActivity {
private static final String METHOD_CHANNEL = "com.zhuandian.flutter/android";
private static final String METHOD_NUMBER_ADD = "numberAdd"; //視頻
private MethodChannel methodChannel;
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
methodChannel = new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger() , METHOD_CHANNEL);
//接受fltuter端傳遞過來的方法,並做出響應邏輯處理
methodChannel.setMethodCallHandler(new MethodChannel.MethodCallHandler() {
@Override
public void onMethodCall(MethodCall call, MethodChannel.Result result) {
System.out.println(call.method);
if (call.method.equals(METHOD_NUMBER_ADD)) {
int number1 = call.argument("number1");
int number2 = call.argument("number1");
result.success(number1 + number2); //返回兩個數相加後的值
}
}
});
}
}
flutter端代碼
class _dadState extends State<dad> {
static final String METHOD_CHANNEL = "com.zhuandian.flutter/android";
static final String NATIVE_METHOD_ADD = "numberAdd"; //原生android平臺定義的供flutter端喚起的方法名
static final MethodChannel _MethodChannel = MethodChannel(METHOD_CHANNEL); //平臺交互通道
@override
void initState() {
super.initState();
Future<String> path = getNumberResult(10,20);
path.then((String num) {
setState(() {});
return num;
});
}
///調用安卓平臺方法
Future<String> getNumberResult(int number1,int number2) async {
Map<String, dynamic> map = {"number1": 13, "number2": 43};
return await _MethodChannel.invokeMethod(NATIVE_METHOD_ADD, map);
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return null;
}
}