示例代码:
#include <flutter/event_channel.h>
#include <flutter/event_stream_handler_functions.h>
#include <flutter/method_channel.h>
#include <flutter/standard_method_codec.h>
flutter::MethodChannel<> method_channel(
flutter_controller_->engine()->messenger(), "samples.flutter.io/method",
&flutter::StandardMethodCodec::GetInstance());
method_channel.SetMethodCallHandler(
[](const flutter::MethodCall<flutter::EncodableValue>& call,
std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
if (call.method_name() == "mapSampleNoParams") {
std::string value = "value";
flutter::EncodableMap infoMap;
infoMap[flutter::EncodableValue("key")] = flutter::EncodableValue(value.c_str());
result->Success(flutter::EncodableValue(infoMap));
}
else if (call.method_name() == "mapParamsSample") {
const auto* arguments = std::get_if<flutter::EncodableMap>(call.arguments());
if(arguments){
try{
std::string key = std::get<std::string>(arguments->at(flutter::EncodableValue("key")));
result->Success(flutter::EncodableValue(0));
}catch(const std::exception &e){
result->Error("INVALID_ARGUMENT", "Failed to extract arguments: " + std::string(e.what()));
}
}
} else {
result->NotImplemented();
}
});
dart:
Future<void> sendPathtoCpp() async {
try {
String szKey = {##key};
await platform.invokeMethod('mapParamsSample', <String, dynamic>{ 'key': szKey });
} on PlatformException catch (e) {
print("Failed to Invoke: '${e.message}'.");
}
}
2572

被折叠的 条评论
为什么被折叠?



