Flutter图表绘制插件flutter_chart_plus的使用

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

Flutter图表绘制插件flutter_chart_plus的使用

1. 安装插件

首先,你需要在 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  flutter_chart_plus: any

或者通过 Git 直接克隆代码库:

dependencies:
  flutter_chart_plus:
    git:
      url: https://github.com/JDongKhan/flutter_chart
      ref: main

然后运行 flutter pub get 来安装插件。

2. 导入插件

在你的 Dart 文件中导入 flutter_chart_plus

import 'package:flutter_chart_plus/flutter_chart.dart';

3. 示例代码

下面是一个完整的示例代码,展示如何使用 flutter_chart_plus 插件来绘制不同类型的图表。我们将创建一个简单的应用,包含 LineChart、BarChart 和 PieChart。

import 'package:flutter/material.dart';

import 'chart_demo_page.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        fontFamilyFallback: ['Roboto'],
        primarySwatch: Colors.blue,
      ),
      home: ChartDemoPage(),
    );
  }
}

class ChartDemoPage extends StatefulWidget {
  const ChartDemoPage({Key? key}) : super(key: key);

  [@override](/user/override)
  _ChartDemoPageState createState() => _ChartDemoPageState();
}

class _ChartDemoPageState extends State<ChartDemoPage> {
  List<Map<String, dynamic>> data = [
    {'time': DateTime.now(), 'value1': 10, 'value2': 20, 'value3': 30},
    {'time': DateTime.now(), 'value1': 20, 'value2': 40, 'value3': 50},
    {'time': DateTime.now(), 'value1': 30, 'value2': 60, 'value3': 70},
  ];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Chart Plus'),
      ),
      body: Column(
        children: [
          Expanded(
            child: Padding(
              padding: const EdgeInsets.all(8.0),
              child: ChartWidget(
                coordinateRender: ChartDimensionsCoordinateRender(
                  yAxis: [
                    YAxis(min: 0, max: 100)
                        , drawGrid: true),
                    YAxis(min: 0, max: 100, offset: (size) =&gt; Offset(size.width - 70, 0)),
                  ],
                  margin: const EdgeInsets.only(left: 40, top: 5, right: 30, bottom: 30),
                  xAxis: XAxis(
                    count: 7,
                    max: 20,
                    zoom: true,
                    formatter: (index) =&gt; startTime.add(Duration(days: index)).toStringWithFormat(format: 'dd'),
                  ),
                  charts: [
                    Bar(
                      color: Colors.yellow,
                      data: data,
                      yAxisPosition: 1,
                      position: (item) =&gt; parserDateTimeToDayValue(item['time'] as DateTime, startTime),
                      value: (item) =&gt; item['value1'],
                    ),
                    Line(
                      data: data,
                      position: (item) =&gt; parserDateTimeToDayValue(item['time'] as DateTime, startTime),
                      values: (item) =&gt; [
                        item['value1'] as num,
                      ],
                    ),
                    Line(
                      colors: [Colors.green],
                      data: data,
                      position: (item) =&gt; parserDateTimeToDayValue(item['time'] as DateTime, startTime),
                      values: (item) =&gt; [
                        item['value2'] as num,
                      ],
                    ),
                  ],
                ),
              ),
            ),
          ),
          Expanded(
            child: Padding(
              padding: const EdgeInsets.all(8.0),
              child: ChartWidget(
                coordinateRender: ChartCircularCoordinateRender(
                  margin: const EdgeInsets.only(left: 40, top: 0, right: 0, bottom: 10),
                  charts: [
                    Pie(
                      data: data,
                      position: ( (item) =&gt; ( double.parse(item['value1'].toString()),
                      holeRadius: 40,
                      valueTextOffset: 20,
                      centerTextStyle: const TextStyle(color: Colors.black, fontSize: 16, fontWeight: FontWeight.bold),
                      valueFormatter: (item) =&gt; item['value1'].toString(),
                    ),
                  ],
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何使用 flutter_chart_plus 插件在 Flutter 应用中绘制图表的代码示例。这个示例将展示如何绘制一个简单的折线图。

首先,确保你已经在 pubspec.yaml 文件中添加了 flutter_chart_plus 依赖:

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

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

接下来,在你的 Dart 文件中,例如 main.dart,你可以使用以下代码来绘制一个折线图:

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

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

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Chart Plus Example'),
      ),
      body: Center(
        child: LineChartExample(),
      ),
    );
  }
}

class LineChartExample extends StatelessWidget {
  final List<LineChartData> lineChartData = [
    LineChartData(
      lines: [
        Line(
          color: Colors.blue,
          data: [
            LineData(1, 10),
            LineData(2, 20),
            LineData(3, 15),
            LineData(4, 25),
            LineData(5, 30),
          ],
        ),
      ],
      xAxis: XAxis(
        data: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
      ),
      yAxis: YAxis(
        left: AxisChannel(
          drawGridLines: false,
        ),
      ),
      chartSettings: ChartSettings(
        animationDuration: 1500,
      ),
    ),
  ];

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Text(
          'Line Chart Example',
          style: TextStyle(fontSize: 24),
        ),
        SizedBox(height: 20),
        Expanded(
          child: LineChart(lineChartData),
        ),
      ],
    );
  }
}

代码说明:

  1. 依赖引入:在 pubspec.yaml 中引入 flutter_chart_plus 插件。
  2. 应用结构
    • MyApp 是根 Widget,它包含一个 MaterialApp
    • MyHomePage 是主页面,包含一个 Scaffold,其中包含一个 AppBar 和一个居中的 LineChartExample
  3. 折线图数据
    • LineChartData 定义了折线图的数据,包括线条数据 (lines)、X 轴数据 (xAxis) 和 Y 轴配置 (yAxis)。
    • Line 表示一条线,包含颜色和数据点 (data)。
    • LineData 表示一个数据点,包含 X 值和 Y 值。
    • XAxisYAxis 分别配置了 X 轴和 Y 轴。
  4. 图表配置ChartSettings 可以配置动画持续时间等设置。
  5. 显示图表:使用 LineChart Widget 显示折线图数据。

运行代码

将上述代码保存为 main.dart 文件,并确保你已经添加了 flutter_chart_plus 依赖。然后,使用 flutter run 命令运行你的 Flutter 应用。你应该会看到一个简单的折线图显示在主页面上。

这个示例展示了如何使用 flutter_chart_plus 插件绘制基本的折线图。根据你的需求,你可以进一步自定义图表的样式和数据。

回到顶部