【发布时间】:2020-12-31 12:27:06
【问题描述】:
真的很难用正确的方法来实现以下目标。如果我想从我的 Flutter 应用程序对 Android 进行本机调用,我可以参考很多示例。例如:创建一个 EventChannel,然后监听事件并响应来自我的 Android/Kotlin onMessage 监听器的请求。
但是,我无法弄清楚如何走另一条路!我有一个在原生 Android 的后台触发的原生事件。当事件发生时,一切正常,我可以打印/调试数据,但我无法弄清楚将这些数据打包并发送回 Flutter 以在应用程序中显示的正确方法:
class MainActivity: FlutterActivity() {
....
....
....
fun somethingHappened(firstName: String, lastName: String, eMail: String) {
Log.d("MyApp","An event has occurred...");
// Log message is printing out correctly, but need to
// create Object / Hashmap / data structure and send to Flutter
}
....
....
}
谁能告诉我正确的模式/使用方法,最好是一个我可以参考的简单示例的链接?
谢谢, 刺拳
【问题讨论】:
-
api.flutter.dev/javadoc/io/flutter/plugin/common/… - 在这里您可以发出“正常”数据 -
success(...)或错误 -error(...) -
@pskink,谢谢。我已经尝试基于使用 EventChannel.EventSink 的示例实现,但我显然没有正确执行,因为我看到的大多数示例都是使用 EventSink 来侦听 Android 中的消息并响应 Flutter。您是否有一个示例可以让我查看消息源自 Android 并发送到 Flutter 的位置?谢谢!
-
不,您可以通过实现
onListen- api.flutter.dev/javadoc/io/flutter/plugin/common/… 来聆听 - 该方法为您提供了我上面提到的接收器 -
类似:
EventChannel.StreamHandler handler = new EventChannel.StreamHandler() { @Override public void onListen(Object o, EventChannel.EventSink eventSink) { } @Override public void onCancel(Object o) { } }; FlutterView fv = getFlutterView(); new EventChannel(fv, "my.event.channel").setStreamHandler(handler); -
谢谢@pskink,你的 cmets 和 Develocodes 帮助我让它工作
标签: android-studio flutter kotlin dart