繁体   English   中英

Flutter 找不到本机 iOS 实现方法

[英]Flutter cannot find a native iOS implementation of method

我尝试从我的Flutter插件的Swift 一侧返回一个字符串到 Dart

public class SwiftAMPlugin: NSObject, FlutterPlugin {

    public static func register(with registrar: FlutterPluginRegistrar) {
        let channel = FlutterMethodChannel(name: "aM", binaryMessenger: registrar.messenger())
        let instance = SwiftAMPlugin()
        registrar.addMethodCallDelegate(instance, channel: channel)
    }

    private func getStr(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
        result("test");
    }

    public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
        switch (call.method) {
        case "getStr":
            getStr(call, result: result);
            break;
        default:
            result(false);
        }
    }
}

Dart方面:

static Future<String> getStr() async {
  try {
      return await _channel.invokeListMethod('getStr');
  } catch(e, s) {
      print(e);
      print(s);
  }
}

但它在getStr调用时崩溃并出现错误:

2020-05-24 00:05:17.547324+0300 Runner[4146:2064989] flutter: MissingPluginException(No implementation found for method getStr on channel aM)
2020-05-24 00:05:17.552161+0300 Runner[4146:2064989] flutter: #0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:154:7)

我对Android有类似的实现,并且效果很好。

问题可能出在哪里?

PS Imma noobie in Flutter ,也许我需要在某处描述我的本机方法实现? 现在我只有switch块来找到所需的方法。

@Шах 你检查过你pubspec.yaml吗? 您应该有一个 iOS 的条目,如下所示:

plugin:
    platforms:
      ios: 
        package: com.domain.my_lib
        pluginClass: MyPlugin
      android: 
        package: com.domain.my_lib
        pluginClass: MyPlugin
      

确保它是正确的 class 和正确的 package。 然后做flutter cleanflutter run

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM