如何将Oneof与OpenAPI Generator一起用于DART?
我正在尝试将OpenAPI Generator用于DART(特别是 Dart-Dio-Next
)。首先,一些代码和工具调用片段:
API规范: https://raw.githubusercontent.com/aptos-labs/aptos-core/main/api/doc/openapi.yaml 。特别是我现在关注 TransActionPayload
。
OpenAPI生成器版本:
$ openapi-generator --version
openapi-generator-cli 5.4.0
CLI调用:
openapi-generator generate \
-i https://raw.githubusercontent.com/aptos-labs/aptos-core/main/api/doc/openapi.yaml \
-g dart-dio-next \
-c openapi-generator.yaml \
--enable-post-process-file \
完整脚本:。
OpenApi-generator.yaml
:
# Unrelated fields like author omitted
pubName: aptos_api_dart
pubLibrary: "aptos_api_dart"
legacyDiscriminatorBehavior: true
# disallowAdditionalPropertiesIfNotPresent: false
useEnumExtension: true
这是我发现的一些潜在相关的文档/问题:
- https://github.com/openapitools/openapi-generator/blob/blob/master/docs/generators/generators/dart.md.md.md
- //github.com/openapitools/openapi-generator/blob/master/docs/generators/dart-dio.md“ rel =“ nofollow noreferrer”> https://github.com/github.com/openapitools/openapitools/openapi-generator/popenapi-generator/blob/blob/master/master /docs/generators/dart-dio.md
- https:// github。 com/openapitools/openapi-generator/dessove/9507
现在,当我尝试使用客户端时,我正在执行此操作:
// Build a transaction request.
TransactionPayloadBuilder transactionPayloadBuilder =
TransactionPayloadBuilder()
..writeSet = (WriteSetBuilder())
..type = "script_function_payload"
..function_ = "0x1::Coin::transfer"
..typeArguments = ListBuilder(["0x1::TestCoin::TestCoin"])
..arguments = ListBuilder(
[otherAddress.withPrefix(), "100"].map((e) => JsonObject(e)));
SubmitTransactionRequest submitTransactionRequest =
(SubmitTransactionRequestBuilder()
..sender = account.address.withPrefix()
..payload = transactionPayloadBuilder)
.build();
// Submit the transaction.
await client
.getTransactionsApi()
.submitTransaction(submitTransactionRequest: submitTransactionRequest);
});
但是我会遇到这样的错误:
$ flutter test
00:02 +4 -1: /Users/dport/github/aptos_sdk_dart/test/full_library_test.dart: client account e2e test [E]
Tried to build class "SubmitTransactionRequest" but nested builder for field "payload" threw: Tried to build class "TransactionPayload" but nested builder for field "code" threw: Tried to construct class "MoveScript" with null field "bytecode". This is forbidden; to allow it, mark "bytecode" with @nullable.
package:aptos_api_dart/src/model/submit_transaction_request.g.dart 221:9 SubmitTransactionRequestBuilder.build
test/full_library_test.dart 51:14 main.<fn>
它在谈论的字段不是必需的成员我要使用的 transActionPayloadBuilder
的变体中的 scripefunctionpaypayload
,并且服务器将基于 type
是我相信的歧视器。自然地,我应该只构建 scriptfunctionpayload
,因为这仅需要必要的字段,除了我不能将其传递给 submittransaction
,因为它期望 trans> transActionPayloadBuilder
。是否有某种方法可以使其生成一个接受任何变体的 signtransaction
的版本?
您可以在此处查看它生成的内容: https://github.com/banool/banool/aptos_api_api_dart 。
假设我无法控制OpenAPI规格,也无法以任何方式更改它。
对如何正确使用此方法的任何帮助将不胜感激。
谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论