Flutter基础功能扩展插件agent_dart_base的使用
Flutter基础功能扩展插件agent_dart_base的使用
Agent Dart
一个为Internet Computer构建的代理库,用于Dart和Flutter应用。
📃 目录
⚡️ 快速开始
针对Dart/Flutter应用
最新稳定版本是:
dependencies:
agent_dart: ^latest-version
针对iOS项目
当你在包含iOS平台的Flutter项目中使用插件时,请确保你已经完成了以下设置:
- 打开
ios/Runner.xcworkspace
。 - 在左侧文件视图中选择
Runner
,然后选择Project -> Runner
。 - 选择
Build Settings
,All
,Combined
并在过滤输入字段中键入strip style
。 - 切换
Strip Style
并选择Non-Global Symbols
。
开发插件
- 克隆并遵循 先决条件,确保你的Flutter已正确安装。
- 必须操作: 初始化你的项目
./scripts/bootstrap.sh
🚦 先决条件
🧰 资源
📖 文档
- pub.dev上的文档
- 文档网站,正在建设中…
🔧 工具/辅助工具
- candid_dart, 一个自动化生成Dart类的工具
- agent_dart_auth, 一个授权扩展插件,用于Internet-Identity授权。
💡 示例
- 简单计数器, 一个简单的计数器,演示如何使用agent_dart,后端有一个canister。
- 授权计数器, 一个需要用户从Internet-Identity授权的计数器,演示如何与agent_dart_auth结合使用。
- 记账应用, 一个演示如何导入助记词并进行交易的记账应用。
🧘♂️ 动机
Internet Computer由区块链驱动,其主要影响是将WebApp真正去中心化。然而,我们正处于移动互联网时代,即使我们可以在手机上使用Safari或Chrome,但大多数普通用户,而不是加密爱好者,更可能使用原生移动应用,主要用户在那里。
吸引这些用户使用Internet Computer的DApp非常重要,通过提供稳定、快速且完全集成到Dfinity区块链的应用程序。我们希望进一步解决“去中心化”和“效率”之间的平衡。但首先,我们必须使移动原生应用工作。
agent-rs
和 agent-js
是实际的底层客户端SDK,就像Ethereum生态系统中的ether.js
或 web3.js
。此库旨在移植和复制这些功能。此库主要用于移动应用连接canisters,而不是部署合约(如果你想这样做,可以使用dart直接实现)。
我们已经尽力迁移了大部分JavaScript版本的接口样式,但由于不同编程语言之间存在限制和差异,我们将尽可能多地记录它们。
🏆 里程碑
- 里程碑1: ✅ 核心功能/库实现。
- 里程碑2: ✅ 增强构建工具和更多示例应用
- 里程碑3: 👷 文档和社区驱动开发
👨💻 贡献
通过为agent_dart贡献,你同意你的贡献将被授权为MIT许可证。
- 分叉此库并添加自己的分支,如
{feat|fix|test|dep}-{detail}
。 - 遵循 先决条件。
- 为所有支持的平台构建rust依赖:
sh ./scripts/bootstrap
- 启动示例。
cd example
flutter run
- 测试。(单元测试和集成测试)
flutter test
- 提交并发起pull请求。
🔗 参考和相关项目
自由在此处列出你的项目,你可以提交在这里。
⚠️ 常见问题
在iOS/MacOS上构建rust库
- 所有的rust方法都必须写在
SwiftAgentDartPlugin.swift
中,以避免XCode的树摇动。
macOS上的网络问题
- 如果你在运行示例或构建flutter应用时遇到此问题:
[macOS] SocketException: Connection failed (OS Error: Operation not permitted, errno = 1)
- 前往macOS的
macos/Runner
目录。 - 在
DebugProfile.entitlements
和ReleaseProfile.entitlements
中添加以下内容:
<key>com.apple.security.network.client</key>
<true/>
更多关于Flutter基础功能扩展插件agent_dart_base的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter基础功能扩展插件agent_dart_base的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
agent_dart_base
是一个为 Flutter 项目提供基础功能扩展的插件,它通常包含了一些常用的工具类、扩展方法、以及一些基础功能的封装,帮助开发者更高效地开发 Flutter 应用。以下是如何使用 agent_dart_base
插件的一些基本步骤和功能示例。
1. 安装插件
首先,你需要在 pubspec.yaml
文件中添加 agent_dart_base
插件的依赖:
dependencies:
flutter:
sdk: flutter
agent_dart_base: ^版本号 # 替换为最新的版本号
然后运行 flutter pub get
来安装插件。
2. 导入插件
在你的 Dart 文件中导入 agent_dart_base
插件:
import 'package:agent_dart_base/agent_dart_base.dart';
3. 使用插件提供的功能
agent_dart_base
插件通常包含以下一些基础功能:
3.1. 工具类
插件可能提供了一些工具类,例如 StringUtils
、DateUtils
等,用于处理字符串、日期等常见操作。
// 示例:使用 StringUtils 工具类
String str = "Hello, World!";
String reversedStr = StringUtils.reverse(str);
print(reversedStr); // 输出: !dlroW ,olleH
// 示例:使用 DateUtils 工具类
DateTime now = DateTime.now();
String formattedDate = DateUtils.format(now, "yyyy-MM-dd");
print(formattedDate); // 输出: 2023-10-05
3.2. 扩展方法
插件可能为一些常见的 Dart 类提供了扩展方法,例如 List
、Map
等。
// 示例:使用 List 的扩展方法
List<int> numbers = [1, 2, 3, 4, 5];
int sum = numbers.sum();
print(sum); // 输出: 15
// 示例:使用 Map 的扩展方法
Map<String, int> map = {"a": 1, "b": 2, "c": 3};
Map<String, int> doubledMap = map.mapValues((value) => value * 2);
print(doubledMap); // 输出: {a: 2, b: 4, c: 6}
3.3. 基础功能封装
插件可能还封装了一些基础功能,例如网络请求、本地存储等。
// 示例:使用网络请求功能
void fetchData() async {
var response = await HttpUtils.get("https://api.example.com/data");
print(response);
}
// 示例:使用本地存储功能
void saveData() async {
await StorageUtils.saveString("key", "value");
String value = await StorageUtils.getString("key");
print(value); // 输出: value
}
4. 自定义配置
agent_dart_base
插件可能允许你进行一些自定义配置,例如设置网络请求的超时时间、本地存储的路径等。
void configurePlugin() {
HttpUtils.setTimeout(Duration(seconds: 10));
StorageUtils.setStoragePath("/path/to/storage");
}