Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确地从Android发送数据到Flatter?_Android_Dart_Flutter_Protocol Buffers - Fatal编程技术网

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

如何正确地从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

我正试图将数据从Flatter来回发送到我的本地平台(在本例中为Android)。 为了保持模型的一致性,我使用协议缓冲区为所有平台生成了模型

当我试图将数据从Android传递到Flatter时,如果没有像序列化到手工制作的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 {...}
在爪哇

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()
}