当前位置:   article > 正文

flutter与Ios原生通讯(一)MethodChannel_flutter ios methodchannel

flutter ios methodchannel

flutter 与 Ios 原生通讯

  • MethodChannel

flutter 调用 ios 原生方法,使用 MethodChannel 用于传递方法调用(method invocation)通常用来调用 native 中某个方法

native端


// 注册测试插件方法
func testPlugin(message: FlutterBinaryMessenger) {
    let channel = FlutterMethodChannel(name: "plugin_apple", binaryMessenger: message)
    channel.setMethodCallHandler {
        (call: FlutterMethodCall, result: @escaping FlutterResult) in
        if (call.method == "apple_one") {
            result(["result": "success", "code": 200] as [String : Any])
        }
        if (call.method == "apple_two") {
            result(["result": "success", "code": 404] as [String : Any])
        }
    }
}AppDelegate 中调用:
// ... code
	// 注册新测试方法
    // 挂载到rootview上
      let messager : FlutterBinaryMessenger = window?.rootViewController as!FlutterBinaryMessenger
      
      testPlugin(message: messager);
// ... code 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

Flutter端

  // 调用 apple_one 方法
  Future<void> appleOne() async {
    MethodChannel _channel = const MethodChannel("plugin_apple");
    final result = await _channel.invokeMethod("apple_one");
    Map map = result as LinkedHashMap<Object?, Object?>;
    print("result: ${map["result"]}");
    print("code: ${map["code"]}");
  }

  // 调用 apple_two 方法
  Future<void> appleTwo() async {
    MethodChannel _channel = const MethodChannel("plugin_apple");
    final result = await _channel.invokeMethod("apple_two");
    Map map = result as LinkedHashMap<Object?, Object?>;
    print("result: ${map["result"]}");
    print("code: ${map["code"]}");
  }


   /// 布局
   body: Center(
       child: Column(
         mainAxisAlignment: MainAxisAlignment.center,
         children: [
           GestureDetector(
             onTap: () {
               appleOne();
             },
             child: const Text("调用方法 apple_one"),
           ),
           const SizedBox(
             height: 10,
           ),
           GestureDetector(
             onTap: () {
               appleTwo();
             },
             child: const Text("调用 apple_two"),
          )
        ],
      ),
    )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

预览
在这里插入图片描述
调用会在控制台输出测试

在这里插入图片描述

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号