Flutter圆形图表绘制插件circular_chart_flutter的使用

Flutter圆形图表绘制插件circular_chart_flutter的使用

该插件基于并从flutter_circular_chart分叉而来。这是一个用于使用Flutter创建动画圆形图表库,灵感来源于Zero to One with Flutter

概览

通过提供数据对象,可以轻松创建动画饼图和径向图。

动画随机径向图示例

动画饼图示例 动画径向图示例带标签

检查示例文件夹以获取上述截图的源代码。

目录

安装

从pub安装最新版本。

入门

导入包:

import 'package:flutter_circular_chart/flutter_circular_chart.dart';

创建一个GlobalKey以便访问图表并更新其数据:

final GlobalKey<AnimatedCircularChartState> _chartKey = new GlobalKey<AnimatedCircularChartState>();

创建图表数据条目对象:

List<CircularStackEntry> data = <CircularStackEntry>[
  new CircularStackEntry(
    <CircularSegmentEntry>[
      new CircularSegmentEntry(500.0, Colors.red[200], rankKey: 'Q1'),
      new CircularSegmentEntry(1000.0, Colors.green[200], rankKey: 'Q2'),
      new CircularSegmentEntry(2000.0, Colors.blue[200], rankKey: 'Q3'),
      new CircularSegmentEntry(1000.0, Colors.yellow[200], rankKey: 'Q4'),
    ],
    rankKey: 'Quarterly Profits',
  ),
];

创建一个AnimatedCircularChart,传入_chartKey和初始数据:

@override
Widget build(BuildContext context) {
  return new AnimatedCircularChart(
    key: _chartKey,
    size: const Size(300.0, 300.0),
    initialChartData: data,
    chartType: CircularChartType.Pie,
  );
}

调用updateData来使图表动画化:

void _cycleSamples() {
  List<CircularStackEntry> nextData = <CircularStackEntry>[
    new CircularStackEntry(
      <CircularSegmentEntry>[
        new CircularSegmentEntry(1500.0, Colors.red[200], rankKey: 'Q1'),
        new CircularSegmentEntry(750.0, Colors.green[200], rankKey: 'Q2'),
        new CircularSegmentEntry(2000.0, Colors.blue[200], rankKey: 'Q3'),
        new CircularSegmentEntry(1000.0, Colors.yellow[200], rankKey: 'Q4'),
      ],
      rankKey: 'Quarterly Profits',
    ),
  ];
  setState(() {
    _chartKey.currentState.updateData(nextData);
  });
}

自定义

孔洞标签

属性 默认值
holeLabel null
labelStyle Theme.of(context).textTheme.body2

示例:

new AnimatedCircularChart(
  key: _chartKey,
  size: _chartSize,
  initialChartData: <CircularStackEntry>[
    new CircularStackEntry(
      <CircularSegmentEntry>[
        new CircularSegmentEntry(
          33.33,
          Colors.blue[400],
          rankKey: 'completed',
        ),
        new CircularSegmentEntry(
          66.67,
          Colors.blueGrey[600],
          rankKey: 'remaining',
        ),
      ],
      rankKey: 'progress',
    ),
  ],
  chartType: CircularChartType.Radial,
  percentageValues: true,
  holeLabel: '1/3',
  labelStyle: new TextStyle(
    color: Colors.blueGrey[600],
    fontWeight: FontWeight.bold,
    fontSize: 24.0,
  ),
)

孔洞标签示例

段落边框样式

属性 默认值
edgeStyle SegmentEdgeStyle.flat
SegmentEdgeStyle 描述
flat (默认) 段落以平直边缘开始和结束。
round 段落以半圆开始和结束。

示例:

new AnimatedCircularChart(
  key: _chartKey,
  size: _chartSize,
  initialChartData: <CircularStackEntry>[
    new CircularStackEntry(
      <CircularSegmentEntry>[
        new CircularSegmentEntry(
          33.33,
          Colors.blue[400],
          rankKey: 'completed',
        ),
        new CircularSegmentEntry(
          66.67,
          Colors.blueGrey[600],
          rankKey: 'remaining',
        ),
      ],
      rankKey: 'progress',
    ),
  ],
  chartType: CircularChartType.Radial,
  edgeStyle: SegmentEdgeStyle.round,
  percentageValues: true,
)

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

1 回复

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


circular_chart_flutter 是一个用于在 Flutter 应用中绘制圆形图表(如饼图、环形图等)的插件。虽然 circular_chart_flutter 不是一个官方的Flutter插件,但它的使用方式与其他Flutter插件类似。以下是如何使用 circular_chart_flutter 插件绘制圆形图表的基本步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 circular_chart_flutter 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  circular_chart_flutter: ^1.0.0  # 请确保使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 circular_chart_flutter 包。

import 'package:circular_chart_flutter/circular_chart_flutter.dart';

3. 创建图表数据

你可以使用 CircularChartData 类来定义图表的数据。每个数据点由一个 CircularChartSegment 表示。

final List<CircularChartSegment> segments = [
  CircularChartSegment(
    value: 40, // 饼图部分的值
    color: Colors.blue, // 饼图部分的颜色
    label: 'Part 1', // 饼图部分的标签
  ),
  CircularChartSegment(
    value: 30,
    color: Colors.red,
    label: 'Part 2',
  ),
  CircularChartSegment(
    value: 20,
    color: Colors.green,
    label: 'Part 3',
  ),
  CircularChartSegment(
    value: 10,
    color: Colors.yellow,
    label: 'Part 4',
  ),
];

4. 创建图表控件

使用 CircularChart 控件来显示图表。你可以将它添加到你的 build 方法中。

[@override](/user/override)
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text('Circular Chart Example'),
    ),
    body: Center(
      child: CircularChart(
        data: CircularChartData(segments: segments),
        chartType: CircularChartType.pie, // 图表类型,可以是 pie 或 donut
        size: Size(200, 200), // 图表的大小
      ),
    ),
  );
}

5. 自定义图表

你可以通过修改 CircularChart 的各个属性来自定义图表的外观,例如图表的类型、大小、颜色、标签等。

CircularChart(
  data: CircularChartData(segments: segments),
  chartType: CircularChartType.donut, // 切换为环形图
  size: Size(250, 250),
  holeRadius: 50, // 环形图的中心孔洞半径
  labelStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), // 标签样式
  legend: true, // 是否显示图例
  legendPosition: LegendPosition.bottom, // 图例位置
)

6. 运行应用

现在你可以运行你的 Flutter 应用,看到绘制的圆形图表。

7. 其他注意事项

  • 如果你无法找到 circular_chart_flutter 插件,可能是因为它不再维护或未被广泛使用。你可以考虑使用其他更流行的图表库,如 fl_chartcharts_flutter 等。
  • 确保你使用的插件版本与你的 Flutter SDK 兼容。

示例代码

以下是完整的示例代码:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: CircularChartExample(),
    );
  }
}

class CircularChartExample extends StatelessWidget {
  final List<CircularChartSegment> segments = [
    CircularChartSegment(
      value: 40,
      color: Colors.blue,
      label: 'Part 1',
    ),
    CircularChartSegment(
      value: 30,
      color: Colors.red,
      label: 'Part 2',
    ),
    CircularChartSegment(
      value: 20,
      color: Colors.green,
      label: 'Part 3',
    ),
    CircularChartSegment(
      value: 10,
      color: Colors.yellow,
      label: 'Part 4',
    ),
  ];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Circular Chart Example'),
      ),
      body: Center(
        child: CircularChart(
          data: CircularChartData(segments: segments),
          chartType: CircularChartType.pie,
          size: Size(200, 200),
        ),
      ),
    );
  }
}
回到顶部