如何正确地将数据从Android发送到Flutter?

时间:2019-04-25 15:06:07

标签: android dart flutter protocol-buffers

我正在尝试将数据从Flutter来回发送到我的本机平台(在本例中为Android)。 为了保持模型的一致性,我已经使用Protocol-Buffers为所有平台生成了模型。

当我尝试将数据从Android传递到Flutter时,如果找不到像序列化为手工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

在Dart中我上课

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);

在Dart中:

var result = await platform.invokeMethod("generatePerson");
if(result is SimplePerson) {
  print("Success!");
} else {
  print("Failure!");
}

到目前为止,我只遇到失败或异常。

谢谢!

1 个答案:

答案 0 :(得分:0)

您非常接近您的使用结果,但是我让它与result.success一起工作

"%m%d"

此处的最佳示例https://www.freecodecamp.org/news/flutter-platform-channels-with-protobuf-e895e533dfb7/

编辑没有看到这篇文章的年龄 我必须使用它,因为鸽子可以尽早使用,尽管鸽子通常很难设置,但我还是更喜欢