flutter调用iOS源码

1.创建FlutterNativePlugin.h

#import <Flutter/Flutter.h>
#import <UIKit/UIKit.h>

@interface AppDelegate : FlutterAppDelegate

@end

2.创建FlutterNativePlugin.m

#import "FlutterNativePlugin.h"
#import <Foundation/Foundation.h>


@implementation FlutterNativePlugin


+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
    FlutterMethodChannel *channel = [FlutterMethodChannel methodChannelWithName:@"toios" binaryMessenger:[registrar messenger]];
    FlutterNativePlugin *instance = [[FlutterNativePlugin alloc ] init];
    [registrar addMethodCallDelegate:instance channel:channel];
    [registrar addApplicationDelegate:instance];
}

- (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result {

    if ([call.method isEqualToString:@"test"]) {

		// 执行你的代码
        //返回给flutter
        result(1);
    }
    
}
@end

3.覆盖AppDelegate.m

#import "AppDelegate.h"
#import "GeneratedPluginRegistrant.h"
#import "FlutterNativePlugin.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GeneratedPluginRegistrant registerWithRegistry:self];
  [FlutterNativePlugin registerWithRegistrar:[self registrarForPlugin:@"FlutterNativePlugin"]];
    return YES;
}

@end

4 .flutter 发消息

// toios 标识
static const platform = const MethodChannel("toios");

  getNative() async{
    String result = '';
    try {
      //参数为方法名称test。  getNative参数可以是任意类型
      result = await platform.invokeMethod("test","getNative");
      
      //结果返回result。 我ios成功返回的1,也可以返回调用ios运行的结果
      if(result == 1){
		//成功 
		//执行你的
      }else{
       //失败
       //执行你的
      }
    } on PlatformException catch (e) {
      print(e.message);
    }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值