我正在尝试从Flutter向我的原生平台(在本例中为Android)中来回发送数据。为了保持一些模型的一致性,我使用Protocol-Buffers为所有平台生成了模型。
当我尝试将数据从Android传递给Flutter时,我没有找到任何方法可以在没有shenanigans的情况下执行此操作,例如序列化为手工制作的JSON。
必须有一种方法来使用protobuf才能这样做,不是吗?
为了给出上下文,我做了一个最小的应用程序来尝试解决这个问题:
我的协议缓冲区
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
在达特我得到了我的课
class SimplePerson extends $pb.GeneratedMessage {...}
而在Java中
public final class ProtoModel {
...
public static final class SimplePerson extends
com.google.protobuf.GeneratedMessageV3 implements
SimplePersonOrBuilder {...}
}
从我的方法频道内的Android,我试图将一个或多个ProtoModel.SimplePerson对象传递回Dart。
到目前为止没有成功。
你怎么会这样做?我希望它类似于Java:
ProtoModel.SimplePerson person = ProtoModel.SimplePerson.newBuilder().setId(3).setName("Person Name").build();
result(person);
在达特:
var result = await platform.invokeMethod("generatePerson");
if(result is SimplePerson) {
print("Success!");
} else {
print("Failure!");
}
到目前为止,我只得到失败或例外。
谢谢!