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?
- 与交易关联的备注,如果没有备注则为null
blockTime
: 作为int?
- 估计的生产时间,作为处理交易时的Unix时间戳
,如果不可用则为null
confirmationStatus
: 作为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?
- 自签名确认以来的块数,如果根化且最终确定,则为null
err
: 作为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?
- 与交易关联的备注,如果没有备注则为null
blockTime
: 作为int?
- 估计的生产时间,作为处理交易时的Unix时间戳
,如果不可用则为null
confirmationStatus
: 作为ConfirmationStatus?
- 交易的集群确认状态
网络
WorkenSdk.getNetworkService(); /// 提取功能的服务
如果使用定位器,则也可以这样获取服务:
locator.get<NetworkService>(); /// 从定位器获取服务
显示区块信息
WorkenSdk.getNetworkService().blockInformation(blockNumber: blockNumber);
参数 | 类型 | 描述 |
---|---|---|
blockNumber | int | 必须的参数,区块编号 |
此函数检索区块链上特定区块的详细信息。 它返回包含以下数据的Block模型:
blockhash
: 作为String
- 这个区块的区块哈希,作为base-58编码字符串previousBlockhash
: 作为String
- 这个区块父区块的区块哈希,作为base-58编码字符串。如果由于账本清理导致父区块不可用,则此字段将返回1111..11
parentSlot
: 作为int
- 这个区块父区块的槽索引transactions
: 作为List<Transaction>
- 如果请求了TransactionDetailLevel.full
交易详细信息,则呈现。一个Transaction
对象数组meta
: 作为Meta?
- 交易状态元数据对象signatures
: 作为List<String>
- 如果请求了TransactionDetailLevel.signatures
交易详细信息,则呈现。一个字符串
数组,对应于区块中交易的顺序rewards
: 作为List<Reward>
- 如果请求了奖励,则呈现。一个Reward
对象数组blockTime
: 作为int?
- 估计的生产时间,作为Unix时间戳
。如果不可用,则为None
blockHeight
: 作为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可能会随着版本更新而变化,因此建议查阅最新的官方文档以获取最准确的信息。