如何正确地从Android发送数据到Flatter?
我正试图将数据从Flatter来回发送到我的本地平台(在本例中为Android)。 为了保持模型的一致性,我使用协议缓冲区为所有平台生成了模型 当我试图将数据从Android传递到Flatter时,如果没有像序列化到手工制作的JSON这样的恶作剧,我找不到任何方法 要做到这一点,必须有一种使用protobuf的方法,不是吗 为了提供上下文,我制作了一个最小的应用程序来尝试解决此问题: 我的协议缓冲区如何正确地从Android发送数据到Flatter?,android,dart,flutter,protocol-buffers,Android,Dart,Flutter,Protocol Buffers,我正试图将数据从Flatter来回发送到我的本地平台(在本例中为Android)。 为了保持模型的一致性,我使用协议缓冲区为所有平台生成了模型 当我试图将数据从Android传递到Flatter时,如果没有像序列化到手工制作的JSON这样的恶作剧,我找不到任何方法 要做到这一点,必须有一种使用protobuf的方法,不是吗 为了提供上下文,我制作了一个最小的应用程序来尝试解决此问题: 我的协议缓冲区 syntax = "proto3"; option java_package = "com.t
syntax = "proto3";
option java_package = "com.test.protobuf_test";
option java_outer_classname = "ProtoModel";
message SimplePerson {
int32 id= 1;
string name= 2;
}
在此基础上,我使用以下方法生成模型:
protoc--java_out和protoc--dart_out
在Dart中,我得到了我的课程
class SimplePerson extends $pb.GeneratedMessage {...}
在爪哇
public final class ProtoModel {
...
public static final class SimplePerson extends
com.google.protobuf.GeneratedMessageV3 implements
SimplePersonOrBuilder {...}
}
在我的方法通道内的Android中,我试图将一个或多个ProtoModel.SimplePerson对象传递回Dart
到目前为止没有成功
你会怎么做呢?
我希望是这样的
在Java中:
在Dart中:
var result = await platform.invokeMethod("generatePerson");
if(result is SimplePerson) {
print("Success!");
} else {
print("Failure!");
}
到目前为止,我只得到了失败或异常
谢谢 您的使用结果非常接近,但我已将其与result.success一起使用
when (call.method) {
"getPlatformVersion" -> result.success(getPlatformVersion().toByteArray())
}
private fun getPlatformVersion(): Models.Version {
return Models.Version.newBuilder().setVersionName("Android ${android.os.Build.VERSION.RELEASE}").build()
}
这里有一个很好的例子
编辑我不知道这篇文章有多旧
我必须使用它,因为鸽子是早期访问的门槛,虽然鸽子通常很难设置,但我确实更喜欢它很可能您需要实现自定义
when (call.method) {
"getPlatformVersion" -> result.success(getPlatformVersion().toByteArray())
}
private fun getPlatformVersion(): Models.Version {
return Models.Version.newBuilder().setVersionName("Android ${android.os.Build.VERSION.RELEASE}").build()
}