【发布时间】:2020-09-10 16:34:15
【问题描述】:
我尝试从 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);
}
}
}
飞镖方面:
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 实现,它运行良好。
问题可能出在哪里?
P.S. Flutter 中的 Imma noobie,也许我需要在某处描述我的原生方法实现?现在我只有switch 块来查找所需的方法。
【问题讨论】:
标签: ios swift flutter dart flutter-plugin