Flutter工作管理插件worken_sdk的使用
Flutter工作管理插件worken_sdk的使用
使用Worken发送和接收Solana上的安全区块链交易
🚀 超过2000万用户正在使用Worken!
SDK库提供了访问Worken的简单和安全的区块链交易的方法。更多关于Worken Token的信息,请点击这里阅读。
配置
为了确保灵活性和易于集成,Worken SDK允许通过环境变量进行配置。这些变量可以直接在项目的.env文件中设置。以下是一些可用的配置变量及其描述:
要了解更多信息,请点击这里阅读。
rpcUrl: rpcUrl
websocketUrl: websocketUrl
使用
安装
$ flutter pub add worken-sdk
初始化
import 'package:worken_sdk/worken_sdk.dart';
import 'package:solana/solana.dart';
import 'package:get_it/get_it.dart';
/// 即使不使用自己的路径也请设置
await WorkenSdk.setup(
typeNet: typeNet
provider: SolanaClient(rpcUrl, websocketUrl),
locator: GetIt.instance, // 您的定位器
);
| 参数 | 类型 | 描述 |
|---|---|---|
| typeNet | SolanaNet | 如果provider为null,请设置typeNet (mainNet, devNet, testNet) |
| provider | SolanaClient | 如果想要使用自己的客户端 |
| locator | GetIt | 如果想要使用自己的定位器 |
钱包
WorkenSdk.getWalletService(); /// 提取功能的服务
如果使用定位器,则也可以这样获取服务:
locator.get<WalletService>(); /// 从定位器获取服务
获取钱包余额
WorkenSdk.getWalletService().getBalance(address: address);
| 参数 | 类型 | 描述 |
|---|---|---|
| address | String | 必须的参数,您的钱包地址 |
此结构详细描述了以WORK代币形式指定合同的钱包余额。 它返回包含以下数据的TokenAmount模型:
amount: 作为String- 作为字符串的原始令牌数量,忽略小数点decimals: 作为int- 代币的铸币小数位数uiAmountString: 作为String?- 考虑到小数点的令牌金额作为字符串
获取钱包交易历史
WorkenSdk.getWalletService().getTransactions(address: address);
| 参数 | 类型 | 描述 |
|---|---|---|
| address | String | 必须的参数,您的钱包地址 |
此方法返回包含以下数据的TransactionSignatureInformation列表:
signature: 作为String- 交易签名作为base-58编码字符串slot: 作为int- 包含交易的块所在的槽err: 作为Map<String, dynamic>?- 包含错误详情memo: 作为String?- 与交易关联的备注,如果没有备注则为nullblockTime: 作为int?- 估计的生产时间,作为处理交易时的Unix时间戳,如果不可用则为nullconfirmationStatus: 作为ConfirmationStatus?- 交易的集群确认状态
创建新钱包
WorkenSdk.getWalletService().createWallet();
创建并初始化给定的bip39助记词字符串(12个单词)的SolanaWallet账户和change账户。
省略account或change意味着它们将为null,在这种情况下,null的含义如下:
如果account或change中的任何一个为null,而另一个不是,则则将其视为零。
合约
WorkenSdk.getContractService(); /// 提取功能的服务
如果使用定位器,则也可以这样获取服务:
locator.get<ContractService>(); /// 从定位器获取服务
显示合约状态
WorkenSdk.getContractService().getContractStatus();
此方法返回与提供的Pubkey相关的所有信息
lamports: 作为int- 分配给该帐户的lamports数量,作为一个u64owner: 作为String- 程序的base-58编码Pubkey,该程序已分配给此帐户data: 作为AccountData?- 与帐户关联的数据,可以是编码二进制数据或JSON格式executable: 作为bool- 帐户是否包含程序的布尔值rentEpoch: 作为BigInt- 此帐户将在下一个租金周期的epoch,作为一个u64
交易
WorkenSdk.getTransactionService(); /// 提取功能的服务
如果使用定位器,则也可以这样获取服务:
locator.get<TransactionsService>(); /// 从定位器获取服务
准备交易
WorkenSdk.getTransactionService().prepareTransaction({
required String sourcePrivateKey,
required String sourceWallet,
required String destinationWallet,
required int amount});
| 参数 | 类型 | 描述 |
|---|---|---|
| sourcePrivateKey | String | 必须的参数,发送者的私钥(base58编码) |
| sourceWallet | String | 必须的参数,接收者钱包地址 |
| destinationWallet | String | 必须的参数,铸币地址 |
| amount | int | 必须的参数,在WORKEN中的发送金额 |
此函数准备Worken SPL令牌的交易
它返回我们txHash String
发送交易
WorkenSdk.getTransactionService().sendTransaction();
| 参数 | 类型 | 描述 |
|---|---|---|
| hashString | String | 必须的参数,准备好的txHash |
此函数发送准备好的交易
它返回我们signature hash String
查看交易状态
WorkenSdk.getTransactionService().transactionStatus({required String signature});
| 参数 | 类型 | 描述 |
|---|---|---|
| signature | String | 必须的参数,交易的签名字符串 |
此函数显示我们想要检查的交易的状态 它返回我们SignatureStatusesResult,其中包含以下数据:
slot: 作为int- 交易被处理的槽confirmations: 作为ConfirmationStatus- 交易的集群确认状态confirmationStatus: 作为int?- 自签名确认以来的块数,如果根化且最终确定,则为nullerr: 作为Map<String, dynamic>- 错误消息
获取估算费用
WorkenSdk.getTransactionService().estimatedFee({required String message});
| 参数 | 类型 | 描述 |
|---|---|---|
| message | String | 必须的参数,通常消息是我们哈希键 |
此函数返回我们int? - 我们将要支付的估算费用
显示最近的交易
WorkenSdk.getTransactionService().recentTransactions({required String mintAddress, required int limit});
| 参数 | 类型 | 描述 |
|---|---|---|
| mintAddress | String | 必须的参数,您的铸币地址 |
| limit | int | 必须的参数,我们想查看的交易数量 |
此函数返回我们List<TransactionSignatureInformation>,其中包含以下数据:
signature: 作为String- 交易签名作为base-58编码字符串slot: 作为int- 包含交易的块所在的槽err: 作为Map<String, dynamic>- 错误消息memo: 作为String?- 与交易关联的备注,如果没有备注则为nullblockTime: 作为int?- 估计的生产时间,作为处理交易时的Unix时间戳,如果不可用则为nullconfirmationStatus: 作为ConfirmationStatus?- 交易的集群确认状态
网络
WorkenSdk.getNetworkService(); /// 提取功能的服务
如果使用定位器,则也可以这样获取服务:
locator.get<NetworkService>(); /// 从定位器获取服务
显示区块信息
WorkenSdk.getNetworkService().blockInformation(blockNumber: blockNumber);
| 参数 | 类型 | 描述 |
|---|---|---|
| blockNumber | int | 必须的参数,区块编号 |
此函数检索区块链上特定区块的详细信息。 它返回包含以下数据的Block模型:
blockhash: 作为String- 这个区块的区块哈希,作为base-58编码字符串previousBlockhash: 作为String- 这个区块父区块的区块哈希,作为base-58编码字符串。如果由于账本清理导致父区块不可用,则此字段将返回1111..11parentSlot: 作为int- 这个区块父区块的槽索引transactions: 作为List<Transaction>- 如果请求了TransactionDetailLevel.full交易详细信息,则呈现。一个Transaction对象数组meta: 作为Meta?- 交易状态元数据对象signatures: 作为List<String>- 如果请求了TransactionDetailLevel.signatures交易详细信息,则呈现。一个字符串数组,对应于区块中交易的顺序rewards: 作为List<Reward>- 如果请求了奖励,则呈现。一个Reward对象数组blockTime: 作为int?- 估计的生产时间,作为Unix时间戳。如果不可用,则为NoneblockHeight: 作为int?- 在此区块下的区块数量
显示网络状态
WorkenSdk.getNetworkService().networkStatus();
此函数返回一个NetworkStatusModel:
blockData: 作为int- 节点的当前区块高度feeRate作为int?- 网络将对特定Message收取的费用
监控网络拥堵
WorkenSdk.getNetworkService().monitorCongestion();
更多关于Flutter工作管理插件worken_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter工作管理插件worken_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用worken_sdk插件来进行工作管理的示例代码。请注意,实际使用中可能需要根据worken_sdk的具体版本和API文档进行调整。
首先,确保你已经在pubspec.yaml文件中添加了worken_sdk依赖:
dependencies:
flutter:
sdk: flutter
worken_sdk: ^latest_version # 替换为实际的最新版本号
然后,运行flutter pub get来安装依赖。
接下来,在你的Flutter项目中,你可以按照以下步骤使用worken_sdk:
- 初始化Worken SDK:
在应用的入口文件(通常是main.dart)中初始化worken_sdk。
import 'package:flutter/material.dart';
import 'package:worken_sdk/worken_sdk.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 初始化Worken SDK
WorkenSDK.instance.initialize(
clientId: 'your_client_id', // 替换为你的客户端ID
clientSecret: 'your_client_secret', // 替换为你的客户端密钥
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Worken SDK Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
- 创建工作任务:
在你的页面或逻辑中,你可以创建并管理工作任务。例如,在MyHomePage中:
import 'package:flutter/material.dart';
import 'package:worken_sdk/worken_sdk.dart';
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Worken SDK Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 创建工作任务
WorkenTask task = WorkenTask(
title: 'Example Task',
description: 'This is an example task.',
// 根据需求添加其他任务属性
);
try {
WorkenTaskResponse response = await WorkenSDK.instance.createTask(task);
print('Task created successfully: ${response.taskId}');
} catch (e) {
print('Failed to create task: $e');
}
},
child: Text('Create Task'),
),
),
);
}
}
- 获取并显示工作任务列表:
你可以扩展上述代码,以获取并显示工作任务列表。
class _MyHomePageState extends State<MyHomePage> {
List<WorkenTask> _tasks = [];
@override
void initState() {
super.initState();
_fetchTasks();
}
Future<void> _fetchTasks() async {
try {
List<WorkenTask> tasks = await WorkenSDK.instance.getTasks();
setState(() {
_tasks = tasks;
});
} catch (e) {
print('Failed to fetch tasks: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Worken SDK Demo'),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () async {
// 创建工作任务的按钮(同上)
},
child: Text('Create Task'),
),
SizedBox(height: 20),
Expanded(
child: _tasks.isEmpty
? Center(child: Text('No tasks found.'))
: ListView.builder(
itemCount: _tasks.length,
itemBuilder: (context, index) {
WorkenTask task = _tasks[index];
return ListTile(
title: Text(task.title),
subtitle: Text(task.description),
);
},
),
),
],
),
);
}
}
上述代码展示了如何在Flutter应用中使用worken_sdk插件来初始化SDK、创建工作任务以及获取并显示工作任务列表。请确保你已经替换了clientId和clientSecret为你在Worken平台上获取的实际值,并根据需要调整任务属性和其他细节。
注意:由于worken_sdk的具体API可能会随着版本更新而变化,因此建议查阅最新的官方文档以获取最准确的信息。

