由于这是一个颤振插件,我不希望依赖插件的开发人员无论如何都必须初始化插件。也许他们必须这样做,但我真的希望他们不必这样做。
_channel.setMethodCallHandler
基本上,我想要一种在取决于插件的应用程序启动时自动
调用该方法的方法。其他开发人员不必这样做,例如调用DragndropPlugin
类中的静态方法,他们自己来“初始化”插件。
也许有某种方式可以复制在 Java 平台特定方面完成的方式。这是一个被调用的方法的例子,我猜是在插件“加载”时以某种方式颤动:
public static void registerWith(Registrar registrar) {
DragndropPlugin.methodChannel = new MethodChannel(registrar.messenger(), CHANNEL);
DragndropPlugin.methodChannel.setMethodCallHandler(new DragndropPlugin());
}
具体来说,我说的是registerWith
方法。
我尝试了以下方法,但这似乎不起作用。不是主要问题,但我希望能解释一下为什么这不起作用。或者就此而言,如果这应该起作用,我可能会犯下潜在的错误,使其不起作用。
abstract class DragndropPlugin {
static const MethodChannel _channel =
const MethodChannel(_CHANNEL);
static void _handler = _channel.setMethodCallHandler(DragndropPlugin._onMethodCall);
static Future<dynamic> _onMethodCall(MethodCall call) async {
switch (call.method) {
case "onDrag":
print(call.arguments.toString());
break;
default:
print("An unknown method was invoked on the platform-specific side.");
break;
}
}
}
我的问题基本上是我将如何实现上述目标。
Flutter 1.9.1+hotfix.6 • 通道稳定 • https://github.com/flutter/flutter.git
框架• 修订版 68587a0916(6 周前) • 2019-09-13 19:46:58 -0700
引擎• 修订版b863200c37
工具• Dart 2.5.0