Flutter加密货币交易插件binance_spot_plus的使用
Flutter加密货币交易插件binance_spot_plus的使用
重要提示
本项目是从 binance_spot 分支出来的。由于原项目的依赖项与最新的 Flutter 版本不兼容,因此我对其进行了分叉并做了一些修改以使其兼容最新版本的 Flutter。
简介
这是一个用于 Binance SPOT API 的非官方 Dart 包。 目前它包括市场数据端点、子账户端点、钱包端点、现货账户/交易端点、法币端点,以及市场和用户数据流的支持。 如果您发现任何问题,请随时提交问题或拉取请求,我会很高兴接受它们。
目前支持的功能
- 市场数据端点
- 子账户端点
- 钱包端点
- 现货账户/交易端点
- 法币端点
- Websocket 市场流
- 用户数据流
有用的链接
开始使用
安装
在 pubspec.yaml
文件中添加以下依赖:
dependencies:
binance_spot: ^0.0.3
或者使用命令行安装:
flutter pub add binance_spot_plus
使用示例
下面是一个完整的示例,展示了如何使用 binance_spot_plus
插件来获取市场信息和用户数据流。
import 'dart:async';
import 'package:binance_spot/binance_spot_plus.dart';
import 'package:flutter/material.dart' hide Interval;
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
[@override](/user/override)
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
BinanceSpot binanceSpot = BinanceSpot(
key: "<apiKey>",
secret: "<apiSecret>",
);
double lastClosePrice = 0;
String tradablePairs = "";
String lastEventData = "";
late StreamSubscription<dynamic> klineStreamSub;
late StreamSubscription<dynamic> userdataStreamSub;
[@override](/user/override)
void initState() {
startKlineStream();
startUserdataStream();
super.initState();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Binance API 测试器"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text("当前 BTC 价格 : $lastClosePrice"),
Text("最后的用户数据流事件 : $lastEventData"),
TextButton(
onPressed: getTradablePairs,
child: const Text("获取对冲"),
),
Expanded(
flex: 1,
child: SelectableText(
tradablePairs,
maxLines: 200,
minLines: 1,
),
),
],
),
),
);
}
void startKlineStream() {
var stream = binanceSpot.klineStream(
symbol: "BTCUSDT",
interval: Interval.INTERVAL_5m,
);
klineStreamSub = stream.listen(handleNewKline);
}
void handleNewKline(WsKlineEvent event) {
setState(() {
lastClosePrice = event.kline.close;
});
}
void startUserdataStream() async {
var response = await binanceSpot.createListenKey();
if (response.isRight) {
var stream = binanceSpot.userDataStream(listenKey: response.right);
userdataStreamSub = stream.listen(handleUserdataEvent);
} else {
lastEventData = response.left;
}
}
void handleUserdataEvent(dynamic event) {
if (event is WsAccountUpdate) {
lastEventData = "账户更新事件 : ${event.balances.length} 个余额已更新";
} else if (event is WsBalanceUpdate) {
lastEventData = "余额更新事件 : ${event.asset} 余额已更新";
} else if (event is WsExecutionReport) {
lastEventData = "执行报告事件 : 状态为 ${event.orderStatus.toStr()}";
} else if (event is WsListOrderStatus) {
lastEventData = "订单列表更新事件 : 状态为 ${event.listOrderStatus}";
} else {
lastEventData = "未知事件类型 : ${event.toString()}";
}
}
void getTradablePairs() async {
var response = await binanceSpot.exchangeInfo();
if (response.isLeft) {
tradablePairs = response.left;
} else {
var listSymbol = response.right.symbols.map((e) => e.symbol).toList();
tradablePairs = "";
for (var s in listSymbol) {
tradablePairs += "$s ";
}
}
}
[@override](/user/override)
void dispose() {
klineStreamSub.cancel();
userdataStreamSub.cancel();
super.dispose();
}
}
更多关于Flutter加密货币交易插件binance_spot_plus的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter加密货币交易插件binance_spot_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
binance_spot_plus
是一个用于在 Flutter 应用中与 Binance 现货交易 API 进行交互的插件。它提供了对 Binance API 的封装,使开发者能够方便地在 Flutter 应用中执行交易、查询账户信息、获取市场数据等操作。
以下是如何在 Flutter 项目中使用 binance_spot_plus
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 binance_spot_plus
插件的依赖:
dependencies:
flutter:
sdk: flutter
binance_spot_plus: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 binance_spot_plus
插件:
import 'package:binance_spot_plus/binance_spot_plus.dart';
3. 初始化 BinanceSpot 实例
你需要使用你的 Binance API 密钥和密钥来初始化 BinanceSpot
实例:
final binance = BinanceSpot(
apiKey: 'YOUR_API_KEY',
secretKey: 'YOUR_SECRET_KEY',
);
4. 使用 API 方法
binance_spot_plus
提供了多种方法来与 Binance API 进行交互。以下是一些常见的操作示例:
获取账户信息
void getAccountInfo() async {
try {
final accountInfo = await binance.getAccountInfo();
print(accountInfo);
} catch (e) {
print('Error: $e');
}
}
获取市场数据
void getMarketData() async {
try {
final marketData = await binance.getMarketData(symbol: 'BTCUSDT');
print(marketData);
} catch (e) {
print('Error: $e');
}
}
下单
void placeOrder() async {
try {
final order = await binance.placeOrder(
symbol: 'BTCUSDT',
side: OrderSide.BUY,
type: OrderType.LIMIT,
quantity: 0.001,
price: 30000,
timeInForce: TimeInForce.GTC,
);
print(order);
} catch (e) {
print('Error: $e');
}
}
取消订单
void cancelOrder() async {
try {
final result = await binance.cancelOrder(symbol: 'BTCUSDT', orderId: '123456');
print(result);
} catch (e) {
print('Error: $e');
}
}
获取订单信息
void getOrderInfo() async {
try {
final orderInfo = await binance.getOrder(symbol: 'BTCUSDT', orderId: '123456');
print(orderInfo);
} catch (e) {
print('Error: $e');
}
}