flutter dart调用 c++ 方法

示例代码:

#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}'.");
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值