flutter - 我想在插件中执行这个方法,怎么办
解决方案
Flutter 提供了一种使用MethodChannel
.
从颤振MethodChannel
文档(这里):
Flutter 使用一个灵活的系统,允许您调用特定于平台的 API,无论是 Android 上的 Kotlin 或 Java 代码,还是 iOS 上的 Swift 或 Objective-C 代码。
注意:如果需要,方法调用也可以反向发送,平台充当 Dart 中实现的方法的客户端。一个具体的例子是 [quick_actions][2] 插件。
MethodChannel
从颤振调用本机平台代码上的函数的用法:
我们在 Flutter、iOS 和 Android 中创建一个同名的方法通道对象。Android 和 iOS 对象将设置一个方法调用处理程序来接收来自 Flutter 的调用。然后 Flutter 代码可以调用 invokeMethod 来调用原生对象上的处理程序
扑:
static final channelName = 'com.example.widget/keyEvent';
final methodChannel = MethodChannel(channelName);
await this.methodChannel.invokeMethod("dispatchKeyEvent");
安卓:
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugin.common.MethodChannel;
public class MainActivity extends FlutterActivity {
private static final String CHANNEL = "com.example.widget/keyEvent";
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
super.configureFlutterEngine(flutterEngine);
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
.setMethodCallHandler(
(call, result) -> {
if (call.method.equals("dispatchKeyEvent")) {
//TODO: Call the dispatch key event function here
bool resultValue;
if (data != null) {
result.success(data);
} else {
result.error("UNAVAILABLE", "Result not available", null);
}
} else {
result.notImplemented();
}
}
);
}
}
推荐阅读
- mongodb - 使用 MongoDB 的产品目录 - 价格模型
- ios - 如何修复“此编码器仅对采用 NSSecureCoding 的对象进行编码(对象属于 '_SwiftValue' 类)。” Crashlytics 崩溃
- c++ - Friend 函数无法访问私有成员变量
- javascript - 通过javascript(或jquery)发送多个表单数据
- c# - 如何检查对象的多个属性是否有价值
- php - 如何检查用户提交的帖子是否包含禁用词集合中的一个词
- c# - 我无法将 VS-2017 应用程序(Android 和 IOS)部署到 iphone
- cplex - 解释 OPL 的解决方案文件
- sorting - 计算算法时间复杂度的方法
- python - 如何在 doc2vec 模型中使用预训练的 word2vec 向量?