flutter 与原生通信 method channel

override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
         
          GeneratedPluginRegistrant.register(with: self)//pub 插件通信组册

          let registrar = self.registrar(forPlugin: "FlutterIosPay")!//1、创建通信组册
          //组册原生组建
          //let factory = MyPlatformViewFactory(messenger: registrar.messenger())
          //registrar.register(factory, withId: "FlutterIosPay/custom_platform_view")
          //2、组册通信
          Flutter2OCBridge.register(with: registrar);

      }

.h

#import <Foundation/Foundation.h>
#import <Flutter/Flutter.h>
NS_ASSUME_NONNULL_BEGIN

@interface Flutter2OCBridge : NSObject<FlutterPlugin>
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar;

@end

NS_ASSUME_NONNULL_END

.m


+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar{
    channel = [FlutterMethodChannel methodChannelWithName:@"Paul" binaryMessenger:[registrar messenger]];
    Flutter2OCBridge *instance = [[Flutter2OCBridge alloc]init];
    [registrar addMethodCallDelegate:instance channel:channel];
}
- (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result {
    if([call.method isEqualToString:@"flutter2native"]){
        //方法调用
        [Flutter2OCBridge getFlutter2native:call.arguments result:result];
    }
}

flutter端调用

Future iosFlutter2native(Map map) async {
  const platform = const MethodChannel('Paul');
  var result;
  try {
    //方法跟参数
    result = await platform.invokeMethod('flutter2native',map);
  } on PlatformException catch (e) {
    debugPrint(e.toString());
  }
  return  result;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容