Flutter插件本机iOS func句柄未被调用
Posted
技术标签:
【中文标题】Flutter插件本机iOS func句柄未被调用【英文标题】:Flutter plugin native iOS func handle not being called 【发布时间】:2021-09-20 00:20:19 【问题描述】:所以,我正在 ios 中开发我的第一个颤振插件,但我无法使本地方法工作。
例如,从样板代码中,我有
import 'dart:async';
import 'package:flutter/services.dart';
class MobileFlutter
static const MethodChannel _channel =
const MethodChannel('xyz_client');
// Asking this channel to invoke method get platform version
static Future<String?> get platformVersion async
final String version = await _channel.invokeMethod('getPlatformVersion');
return version+"d";
然后在 iOS 中
SwiftMobileFlutterPlugin.swift
我有这个
import Flutter
import UIKit
public class SwiftMobileFlutterPlugin: NSObject, FlutterPlugin
public static func register(with registrar: FlutterPluginRegistrar)
let channel = FlutterMethodChannel(name: "xyz_client", binaryMessenger: registrar.messenger())
let instance = SwiftMobileFlutterPlugin()
registrar.addMethodCallDelegate(instance, channel: channel)
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult)
if ("getPlatformVersion" == call.method)
result("iOS " + UIDevice.current.systemVersion)
我使用了调试器,但它从来没有达到这一点。
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult)
Ps:正在调用public static func register(with registrar: FlutterPluginRegistrar)
。
有人可以帮我调试吗?
【问题讨论】:
【参考方案1】:咨询this 示例代码,我想区别在于handle
函数应该在SwiftMobileFlutterPlugin
类中。喜欢:
import Flutter
import UIKit
public class SwiftMobileFlutterPlugin: NSObject, FlutterPlugin
public static func register(with registrar: FlutterPluginRegistrar)
let channel = FlutterMethodChannel(name: "xyz_client", binaryMessenger: registrar.messenger())
let instance = SwiftMobileFlutterPlugin()
registrar.addMethodCallDelegate(instance, channel: channel)
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult)
if ("getPlatformVersion" == call.method)
result("iOS " + UIDevice.current.systemVersion)
【讨论】:
感谢您的回答。我把它移到课堂上,但它仍然不起作用 您是否使用调试器检查现在是否正在调用handle
?
我做到了。它没有被调用。
此时,我建议您仔细检查您是否调用了正确的方法等。您的完整代码是否公开托管?
哈哈。愚蠢的我。我实际上尝试了您所说的,但忘记从飞镖端调用该方法。谢谢你调查它兄弟:)以上是关于Flutter插件本机iOS func句柄未被调用的主要内容,如果未能解决你的问题,请参考以下文章
如何从颤动中正确调用android本机代码(android/IOS)?
func tableview didSelectRowAtIndexPath 未被调用[重复]
如何使用 MethodChannel 从本机平台调用应用程序的 Dart 部分中的方法?