gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 00:06:03 26 4
gpt4 key购买 nike

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

当我尝试将数据从 Android 传递到 Flutter 时,我没有找到任何方法来完成它,而不需要序列化为手工制作的 JSON 等恶作剧。

必须有一种使用 protobuf 的方法才能做到这一点,不是吗?

为了提供上下文,我制作了一个最小的应用程序来尝试解决这个问题:

我的 Protocol Buffer

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 {...}
}

从我的方法 channel 中的 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!");
}

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

谢谢!

最佳答案

你的使用结果非常接近,但我已经使用了 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()
}

这里有很好的例子 https://www.freecodecamp.org/news/flutter-platform-channels-with-protobuf-e895e533dfb7/

编辑 没看到这篇文章有多旧我必须使用它,因为 Pigeon 仍然是早期访问,虽然 pigeon 通常更难设置,但我更喜欢它

关于android - 如何正确地将数据从Android发送到Flutter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55852431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com