flutter 与 iOS 交互

作者: MenaceiOS | 来源:发表于2020-06-09 08:40 被阅读0次

    由于单位项目中上传图片功能用的是华为云,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的通知之类的方法,最后都没有走通,最后用这个方式走通了,记录一下!!!

    相关文章

      网友评论

        本文标题:flutter 与 iOS 交互

        本文链接:https://www.haomeiwen.com/subject/hoijtktx.html