Flutter金融图表插件candlestix的使用

Flutter金融图表插件candlestix的使用

candlesticks

pub package

适用于所有平台的高性能全功能蜡烛图!

网页演示:


Preview(预览)

IOS macOS

Installation(安装)

  1. 在项目的 pubspec.yaml 文件中添加以下依赖:
dependencies:
  candlestix: ^2.2.0
  1. 使用IDE的图形界面获取包,或者通过命令行运行以下命令:
$ flutter pub get

Usage(使用)

首先导入 candlestix 包:

import 'package:candlestix/candlestix.dart';

Candle(蜡烛数据)

Candle 类包含六个必需变量,用于存储单个蜡烛的数据:日期 (date)、最高价 (high)、最低价 (low)、开盘价 (open)、收盘价 (close) 和成交量 (volume)。

示例代码:

final candle = Candle(
  date: DateTime.now(), // 当前时间
  open: 1780.36,        // 开盘价
  high: 1873.93,        // 最高价
  low: 1755.34,         // 最低价
  close: 1848.56,       // 收盘价
  volume: 0             // 成交量
);

Candlesticks(蜡烛图)

Candlesticks 小部件需要一个蜡烛数据列表,最新的蜡烛数据应位于数组的第一个位置。当最后一个蜡烛变得可见时,会触发 onLoadMoreCandles 回调。如果需要在顶部工具栏中添加自定义操作(如 Binance Candles),可以创建自定义的 ToolBarAction 并将其添加到 actions 参数中。

示例代码:

Candlesticks(
  candles: candles, // 蜡烛数据列表
  annotations: [],   // 注解列表(可选)
)

完整示例代码

以下是一个完整的示例代码,展示如何使用 candlestix 插件来绘制比特币的蜡烛图。

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:candlestix/candlesticks.dart';
import 'package:http/http.dart' as http;

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List<Candle> candles = []; // 存储蜡烛数据
  bool themeIsDark = false; // 是否启用深色主题

  [@override](/user/override)
  void initState() {
    // 初始化时从 API 获取蜡烛数据
    fetchCandles().then((value) {
      setState(() {
        candles = value;
      });
    });
    super.initState();
  }

  // 从 Binance API 获取蜡烛数据
  Future<List<Candle>> fetchCandles() async {
    final uri = Uri.parse(
        "https://api.binance.com/api/v3/klines?symbol=BTCUSDT&interval=1h");
    final res = await http.get(uri);
    return (jsonDecode(res.body) as List<dynamic>)
        .map((e) => Candle.fromJson(e)) // 将 JSON 数据转换为 Candle 对象
        .toList()
        .reversed // 反转顺序,使最新的蜡烛位于第一个位置
        .toList();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: themeIsDark ? ThemeData.dark() : ThemeData.light(), // 切换深色或浅色主题
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          title: Text("BTCUSDT 1H Chart"), // 标题
          actions: [
            IconButton(
              onPressed: () {
                setState(() {
                  themeIsDark = !themeIsDark; // 切换主题
                });
              },
              icon: Icon(
                themeIsDark
                    ? Icons.wb_sunny_sharp // 太阳图标
                    : Icons.nightlight_round_outlined, // 月亮图标
              ),
            )
          ],
        ),
        body: Center(
          child: Candlesticks(
            candles: candles, // 设置蜡烛数据
            annotations: [],   // 注解列表(可选)
          ),
        ),
      ),
    );
  }
}

更多关于Flutter金融图表插件candlestix的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter金融图表插件candlestix的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Candlestix 是一个用于在 Flutter 中绘制金融图表的插件,特别适合显示蜡烛图(Candlestick Chart),这是金融应用中常见的图表类型。以下是如何使用 Candlestix 插件在 Flutter 应用中绘制蜡烛图的基本步骤。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 candlestix 依赖:

dependencies:
  flutter:
    sdk: flutter
  candlestix: ^0.1.0  # 请检查最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入包

在需要使用 Candlestix 的 Dart 文件中导入包:

import 'package:candlestix/candlestix.dart';

3. 准备数据

蜡烛图需要一组 Candle 数据。每个 Candle 包含开盘价、收盘价、最高价、最低价以及时间戳等信息。你可以从 API 获取数据,或者手动创建一些示例数据:

List<Candle> candles = [
  Candle(
    open: 100,
    close: 105,
    high: 110,
    low: 95,
    timestamp: DateTime.now().millisecondsSinceEpoch,
  ),
  Candle(
    open: 105,
    close: 102,
    high: 108,
    low: 100,
    timestamp: DateTime.now().add(Duration(days: 1)).millisecondsSinceEpoch,
  ),
  // 添加更多数据...
];

4. 创建图表

使用 CandlestickChart 组件来显示蜡烛图。你可以自定义图表的样式、颜色等。

class CandlestickChartExample extends StatelessWidget {
  final List<Candle> candles;

  CandlestickChartExample({required this.candles});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Candlestick Chart'),
      ),
      body: CandlestickChart(
        candles: candles,
        candleWidth: 10,
        bullColor: Colors.green,
        bearColor: Colors.red,
        onCandleTap: (candle) {
          print('Tapped on candle: $candle');
        },
      ),
    );
  }
}

5. 运行应用

在你的 main.dart 文件中,将 CandlestickChartExample 作为应用的入口:

void main() {
  runApp(MaterialApp(
    home: CandlestickChartExample(
      candles: [
        Candle(
          open: 100,
          close: 105,
          high: 110,
          low: 95,
          timestamp: DateTime.now().millisecondsSinceEpoch,
        ),
        Candle(
          open: 105,
          close: 102,
          high: 108,
          low: 100,
          timestamp: DateTime.now().add(Duration(days: 1)).millisecondsSinceEpoch,
        ),
        // 添加更多数据...
      ],
    ),
  ));
}

6. 自定义和扩展

Candlestix 提供了许多自定义选项,例如:

  • candleWidth: 控制蜡烛的宽度。
  • bullColorbearColor: 分别控制上涨和下跌蜡烛的颜色。
  • onCandleTap: 点击蜡烛时的回调函数。

你还可以结合其他 Flutter 组件和插件,添加交互功能、缩放、平移等。

7. 处理实时数据

如果你的应用需要显示实时数据,可以使用 StreamBuilderValueListenableBuilder 来动态更新图表数据。

StreamBuilder<List<Candle>>(
  stream: yourDataStream,
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      return CandlestickChart(
        candles: snapshot.data!,
        candleWidth: 10,
        bullColor: Colors.green,
        bearColor: Colors.red,
      );
    } else {
      return Center(child: CircularProgressIndicator());
    }
  },
)
回到顶部