Flutter蜡烛图绘制插件candlesticks的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter蜡烛图绘制插件candlesticks的使用

candlesticks 是一个高性能、功能齐全的蜡烛图插件,适用于所有平台。本文将介绍如何在Flutter项目中使用这个插件,并提供完整的示例代码。

预览

以下是 candlesticks 在不同平台上的运行效果:

iOS 示例 macOS 示例

安装

步骤 1: 添加依赖

在你的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  candlesticks: ^2.1.0

步骤 2: 获取包

通过 IDE 的 GUI 或者命令行获取包:

$ flutter pub get

使用方法

首先,导入 candlesticks 包:

import 'package:candlesticks/candlesticks.dart';

Candle 类

Candle 类包含六个必需的变量:datehighlowopenclosevolume,用于存储单个蜡烛图数据。

final candle = Candle(
  date: DateTime.now(),
  open: 1780.36,
  high: 1873.93,
  low: 1755.34,
  close: 1848.56,
  volume: 0,
);

Candlesticks 小部件

Candlesticks 小部件需要一个蜡烛图数据列表 (List<Candle>),其中最新的数据应位于索引 0 处。onLoadMoreCandles 是一个可选的回调函数,在最后一个蜡烛图可见时调用。如果你想在顶部工具栏中添加更多操作(如 Binance Candles),可以创建自定义的 ToolBarAction 并将其添加到 actions 参数中。

完整示例代码

以下是一个完整的示例代码,展示如何从 Binance API 获取 BTCUSDT 1小时图表的数据并显示在蜡烛图上:

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List<Candle> candles = [];
  bool themeIsDark = false;

  @override
  void initState() {
    fetchCandles().then((value) {
      setState(() {
        candles = value;
      });
    });
    super.initState();
  }

  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))
        .toList()
        .reversed
        .toList();
  }

  @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,
          ),
        ),
      ),
    );
  }
}

说明

  • fetchCandles: 该函数从 Binance API 获取 BTCUSDT 1小时图表的数据,并将其转换为 Candle 对象列表。
  • Candlesticks: 这个小部件接收 candles 列表,并显示蜡烛图。

希望这个指南能帮助你快速上手 candlesticks 插件,并成功绘制出你需要的蜡烛图!如果有任何问题或改进建议,请随时提交 pull request。


更多关于Flutter蜡烛图绘制插件candlesticks的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter蜡烛图绘制插件candlesticks的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter中使用candlesticks插件来绘制蜡烛图(K线图)的示例代码。假设你已经安装并配置好了Flutter开发环境,并且已经通过pubspec.yaml文件添加了candlesticks依赖。

首先,确保你的pubspec.yaml文件中包含以下依赖:

dependencies:
  flutter:
    sdk: flutter
  candlesticks: ^最新版本号  # 请替换为实际最新版本号

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

接下来是一个完整的示例代码,展示如何使用candlesticks插件绘制蜡烛图:

import 'package:flutter/material.dart';
import 'package:candlesticks/candlesticks.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Candlestick Chart',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: CandlestickChartScreen(),
    );
  }
}

class CandlestickChartScreen extends StatefulWidget {
  @override
  _CandlestickChartScreenState createState() => _CandlestickChartScreenState();
}

class _CandlestickChartScreenState extends State<CandlestickChartScreen> {
  // 示例OHLC数据(开盘价、最高价、最低价、收盘价)
  List<OhlcData> ohlcData = [
    OhlcData(DateTime(2023, 10, 1), 100, 110, 95, 105),
    OhlcData(DateTime(2023, 10, 2), 105, 115, 100, 110),
    OhlcData(DateTime(2023, 10, 3), 110, 120, 105, 115),
    OhlcData(DateTime(2023, 10, 4), 115, 130, 110, 125),
    OhlcData(DateTime(2023, 10, 5), 125, 135, 120, 130),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Candlestick Chart Example'),
      ),
      body: Center(
        child: Container(
          width: double.infinity,
          height: 400,
          child: CandlestickChart(
            ohlcData: ohlcData,
            dateFormat: 'yyyy-MM-dd',
            title: 'Candlestick Chart',
            theme: CandlestickThemeData(
              candleColor: CandleColor(
                upColor: Colors.green,
                downColor: Colors.red,
              ),
              gridColor: Colors.grey.withOpacity(0.3),
              backgroundColor: Colors.white,
            ),
          ),
        ),
      ),
    );
  }
}

// OHLC数据模型
class OhlcData {
  final DateTime dateTime;
  final double open;
  final double high;
  final double low;
  final double close;

  OhlcData(this.dateTime, this.open, this.high, this.low, this.close);
}

代码说明:

  1. 依赖引入:确保在pubspec.yaml中添加了candlesticks依赖。
  2. 数据准备:定义了一个OhlcData类来表示OHLC(开盘价、最高价、最低价、收盘价)数据,并创建了一个示例数据列表。
  3. UI构建
    • 使用MaterialAppScaffold构建应用的基本结构。
    • Scaffoldbody中使用Container来设置蜡烛图的宽度和高度。
    • 使用CandlestickChart组件来绘制蜡烛图,并传入OHLC数据和主题配置。

注意事项:

  • 确保candlesticks插件的版本是最新的,或者根据你使用的Flutter版本选择一个兼容的版本。
  • OHLC数据需要根据你的实际需求进行填充。

这样,你就可以在Flutter应用中绘制蜡烛图了。希望这个示例代码对你有帮助!

回到顶部