You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过平台特定代码实现Flutter向原生iOS(Swift)传递数据

Flutter 向 iOS Swift 端传递数据实现方案

你当前的代码已经完成了MethodChannel的基础通道搭建,只需补充Swift端读取参数的逻辑即可实现数据传递:

修正后Dart端代码

注意:如果hello为字符串常量,需要添加引号包裹

static const methodChannel = MethodChannel('com.ios');
void openPaymentMethod() async {
        // 此处传递的字典{'text': hello}会同步发送到Swift端
        String? result = await methodChannel
            .invokeMethod<String>('isSetUpAvailable', {'text': "hello"});
        if (result != null) {
          print(result);
        }
      }

修正后Swift端代码

let METHOD_CHANNEL_NAME = "com.ios"
let controller: FlutterViewController = window?.rootViewController as! FlutterViewController
let methodChannel = FlutterMethodChannel(name: METHOD_CHANNEL_NAME, binaryMessenger: controller.binaryMessenger)
methodChannel.setMethodCallHandler({
    (call:FlutterMethodCall,result: @escaping FlutterResult) -> Void in
    switch call.method{
    case "isSetUpAvailable":
        // 读取Flutter传递过来的参数
        guard let args = call.arguments as? [String: Any],
              let textFromFlutter = args["text"] as? String else {
            result(FlutterError(code: "INVALID_ARGS", message: "参数格式错误", details: nil))
            return
        }
        // 此处可直接使用拿到的textFromFlutter数据
        print("从Flutter接收到的参数:\(textFromFlutter)")
        result("Success")
    default:
        result(FlutterMethodNotImplemented)
    }
})
关键注意事项
  • 两端的通道名称com.ios、方法名isSetUpAvailable必须完全一致,大小写敏感
  • Dart侧传递的基础类型(字符串、数字、字典、数组)都可以在Swift端直接对应转换,不需要额外编解码
  • 如果传递自定义类,需要先序列化为字典或者JSON字符串再传输

内容的提问来源于stack exchange,提问作者Mohammed Nabil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:54:01