Flutter学习跨平台开发

flutter 与 iOS 交互

2020-06-09  本文已影响0人  MenaceiOS

由于单位项目中上传图片功能用的是华为云,flutter暂时好像还没有相关插件,所以只能想到去调用原生进行图片上传,上传成功后在返回URL给flutter

flutter代码如下:

static const platform = const MethodChannel('com.uploadImage');
  void _getNativeMessage() async{
    String result;
    try {
     // OC回调中对应的”约定” : getFlutterMessage,[1,2,3]:传递参数
      result = await platform.invokeMethod('getFlutterMessage',[1,2,3]);
    } on PlatformException catch (e) {
      result = "error message $e";
    }
  }

其中 com.uploadImage 需要与iOS端一致

iOS端代码如下

新建文件.h文件如下:

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

NS_ASSUME_NONNULL_BEGIN

@interface UploadImagePlugin : NSObject<FlutterPlugin>
@end

新建文件.m文件如下:

#import "UploadImagePlugin.h"
#import <FluttertoastPlugin.h>

@interface UploadImagePlugin()
@property(nonatomic, retain) FlutterMethodChannel *channel;
@end

@implementation UploadImagePlugin
+ (void)registerWithRegistrar:(NSObject <FlutterPluginRegistrar> *)registrar {
  FlutterMethodChannel *channel =
  [FlutterMethodChannel methodChannelWithName:@"com.uploadImage" binaryMessenger:registrar.messenger];
    [channel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult  _Nonnull result) {
        NSLog(@"222");
        result(@"3333");
    }];
  
}

其中result为回调给flutter的函数,里面可以携带一些参数

iOS端还需在GeneratedPluginRegistrant该文件中把刚刚新建的文件注册一下,代码如下:

[UploadImagePlugin registerWithRegistrar:[registry registrarForPlugin:@"UploadImage"]];

至此flutter与iOS的交互就结束了,我也是找了很多教程,都是新建文件写上注册flutter的通知之类的方法,最后都没有走通,最后用这个方式走通了,记录一下!!!

上一篇下一篇

猜你喜欢

热点阅读