Flutter命令行工具插件candid_dart_cli的使用
Flutter命令行工具插件candid_dart_cli的使用
提供一个命令行工具来处理.did
文件,并快速生成与.did
文件对应的Dart代码。
生成的代码包括:
IDL
Service
及其相关方法- 对应于
.did
文件的对象及其相关方法
生成的代码依赖于 agent_dart
快速开始
安装CLI
dart pub global activate candid_dart_cli
运行CLI
did2dart -d ./ -r
CLI选项
-p, --path 指定`.did`文件的路径。
-i, --inject-packages 将带有设置的包导入到每个生成的Dart文件中。
-b, --pre-actor-call 在调用Actor方法之前注入一段代码,可以引用请求参数`request`和类型为CanisterActor的参数`actor`。
-a, --post-actor-call 在调用Actor方法之后注入一段代码,可以引用请求参数`request`,类型为CanisterActor的参数`actor`,以及方法的返回结果`response`。
-d, --dir 指定`.did`文件所在的目录。
-r, --recursive 是否递归搜索`.did`文件,只有在指定目录时才有效。
-f, --freezed 是否使用`Freezed`。
-e, --equal 是否生成`equals`和`hashCode`方法。
(默认启用)
-c, --copy-with 是否生成`copyWith`方法。
(默认启用)
-u, --make-collections-unmodifiable 是否使集合字段不可修改,只有在启用`Freezed`时才有效。
(默认启用)
-h, --help 查看帮助选项。
许可证
MIT License
版权所有 (c) 2022 AstroxNetwork
特此免费获得一份本软件的副本,以及随附的文档文件("软件"),以供任何目的使用,包括但不限于分发、复制、修改、合并、发布、分发、再许可和/或销售该软件的副本,并允许向其提供软件的人使用、复制、修改、合并、发布、分发、再许可和/或销售该软件。
以上版权声明和本许可声明必须包含在所有副本或实质性部分的软件中。
软件按"原样"提供,没有任何形式的明示或暗示保证,包括但不限于适销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权持有者都不应对因软件或软件的使用或其他交易而引起的任何索赔、损害或其他责任负责。
示例代码
假设我们有一个名为example.did
的文件,内容如下:
service : example {
add: (nat) -> ();
get: () -> (nat);
}
我们可以使用candid_dart_cli
生成相应的Dart代码:
did2dart -p ./example.did -d ./generated -r
这将在./generated
目录下生成以下文件:
example.did.dart
文件内容:
// Generated by Candid Dart CLI
import 'package:agent_dart/agent_dart.dart';
class ExampleService {
final Agent agent;
ExampleService(this.agent);
Future<void> add(int value) async {
await agent.update('add', '(nat)', [value]);
}
Future<int> get() async {
return (await agent.query('get', '()', [])) as int;
}
}
class AddRequest {
final int value;
AddRequest({required this.value});
Map<String, dynamic> toJson() => {'value': value};
}
class GetResponse {
final int result;
GetResponse(this.result);
factory GetResponse.fromJson(Map<String, dynamic> json) =>
GetResponse(json['result'] as int);
}
这样,我们就成功地使用candid_dart_cli
生成了与example.did
文件对应的Dart代码。
更多关于Flutter命令行工具插件candid_dart_cli的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter命令行工具插件candid_dart_cli的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
candid_dart_cli
是一个用于生成 Dart 代码的 Flutter 命令行工具插件,它可以将 Candid 文件(Internet Computer 的接口描述语言)转换为 Dart 代码。这个工具对于开发基于 Internet Computer (IC) 的 Flutter 应用非常有用,因为它允许你直接从 Candid 文件生成 Dart 客户端代码,从而简化了与 IC 智能合约的交互过程。
安装 candid_dart_cli
首先,你需要在你的开发环境中安装 candid_dart_cli
。你可以通过 Dart 的包管理工具 pub
来安装它。
-
全局安装:
你可以全局安装
candid_dart_cli
,这样你就可以在命令行中直接使用它。dart pub global activate candid_dart_cli
-
本地安装:
如果你想在特定的项目中使用
candid_dart_cli
,你可以将它添加到pubspec.yaml
文件的dev_dependencies
中:dev_dependencies: candid_dart_cli: ^1.0.0
然后运行:
dart pub get
使用 candid_dart_cli
安装完成后,你可以在命令行中使用 candid_dart_cli
来生成 Dart 代码。以下是基本的使用方法:
-
生成 Dart 代码:
假设你有一个名为
canister.did
的 Candid 文件,你可以使用以下命令生成 Dart 代码:candid_dart_cli generate -i canister.did -o lib/canister.dart
-i
: 指定输入的 Candid 文件路径。-o
: 指定生成的 Dart 文件路径。
-
查看帮助信息:
如果你想查看
candid_dart_cli
的帮助信息,可以运行:candid_dart_cli --help
这将显示所有可用的命令和选项。
示例
假设你有一个简单的 Candid 文件 canister.did
,内容如下:
service : {
greet: (text) -> (text);
}
你可以使用 candid_dart_cli
生成 Dart 代码:
candid_dart_cli generate -i canister.did -o lib/canister.dart
生成的 canister.dart
文件将包含与 Candid 服务接口对应的 Dart 代码,你可以直接在 Flutter 应用中使用这些代码来与 IC 智能合约进行交互。
集成到 Flutter 项目
生成的 Dart 代码可以很容易地集成到你的 Flutter 项目中。你可以将生成的 canister.dart
文件导入到你的 Flutter 项目中,并使用它来调用智能合约的方法。
例如:
import 'package:your_app/canister.dart';
void main() async {
final canister = Canister();
final response = await canister.greet('Hello, IC!');
print(response); // 输出: Hello, IC!
}