Flutter图表绘制插件charts_common_updated的使用

Flutter图表绘制插件charts_common_updated的使用

在Flutter应用中,charts_common_updated 插件是一个非常强大的工具,用于创建各种类型的图表。本指南将展示如何使用该插件来创建一个简单的柱状图。

准备工作

首先,在你的 pubspec.yaml 文件中添加 charts_common_updated 依赖:

dependencies:
  flutter:
    sdk: flutter
  charts_common_updated: ^0.12.0 # 请确保使用最新版本

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

创建柱状图

以下是一个简单的示例,展示如何创建一个柱状图。

示例代码

import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('柱状图示例'),
        ),
        body: Center(
          child: SimpleBarChart.withSampleData(),
        ),
      ),
    );
  }
}

/// 创建一个简单的柱状图
class SimpleBarChart extends StatelessWidget {
  final List<charts.Series> seriesList;
  final bool animate;

  SimpleBarChart(this.seriesList, {this.animate});

  /// 创建数据源
  factory SimpleBarChart.withSampleData() {
    return new SimpleBarChart(
      _createSampleData(),
      // 设置动画效果
      animate: false,
    );
  }

  @override
  Widget build(BuildContext context) {
    return new charts.BarChart(
      seriesList,
      animate: animate,
      // 配置柱状图样式
      barRendererDecorator: new charts.BarLabelDecorator<String>(),
      domainAxis: new charts.OrdinalAxisSpec(
        renderSpec: new charts.SmallTickRendererSpec(labelRotation: 60),
      ),
    );
  }

  /// 创建数据
  static List<charts.Series<OrdinalSales, String>> _createSampleData() {
    final desktopSalesData = [
      new OrdinalSales('2014', 5),
      new OrdinalSales('2015', 25),
      new OrdinalSales('2016', 100),
      new OrdinalSales('2017', 75),
    ];

    final tableSalesData = [
      new OrdinalSales('2014', 25),
      new OrdinalSales('2015', 50),
      new OrdinalSales('2016', 75),
      new OrdinalSales('2017', 100),
    ];

    return [
      new charts.Series<OrdinalSales, String>(
        id: 'Desktop',
        domainFn: (OrdinalSales sales, _) => sales.year,
        measureFn: (OrdinalSales sales, _) => sales.sales,
        data: desktopSalesData,
      ),
      new charts.Series<OrdinalSales, String>(
        id: 'Tablet',
        domainFn: (OrdinalSales sales, _) => sales.year,
        measureFn: (OrdinalSales sales, _) => sales.sales,
        data: tableSalesData,
      )
    ];
  }
}

/// 数据模型类
class OrdinalSales {
  final String year;
  final int sales;

  OrdinalSales(this.year, this.sales);
}

代码解释

  1. 导入依赖

    import 'package:flutter/material.dart';
    import 'package:charts_flutter/flutter.dart' as charts;
    
  2. 创建主应用

    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('柱状图示例'),
            ),
            body: Center(
              child: SimpleBarChart.withSampleData(),
            ),
          ),
        );
      }
    }
    
  3. 定义柱状图类

    class SimpleBarChart extends StatelessWidget {
      final List<charts.Series> seriesList;
      final bool animate;
    
      SimpleBarChart(this.seriesList, {this.animate});
    
      factory SimpleBarChart.withSampleData() {
        return new SimpleBarChart(
          _createSampleData(),
          animate: false,
        );
      }
    
      @override
      Widget build(BuildContext context) {
        return new charts.BarChart(
          seriesList,
          animate: animate,
          barRendererDecorator: new charts.BarLabelDecorator<String>(),
          domainAxis: new charts.OrdinalAxisSpec(
            renderSpec: new charts.SmallTickRendererSpec(labelRotation: 60),
          ),
        );
      }
    
      static List<charts.Series<OrdinalSales, String>> _createSampleData() {
        final desktopSalesData = [
          new OrdinalSales('2014', 5),
          new OrdinalSales('2015', 25),
          new OrdinalSales('2016', 100),
          new OrdinalSales('2017', 75),
        ];
    
        final tableSalesData = [
          new OrdinalSales('2014', 25),
          new OrdinalSales('2015', 50),
          new OrdinalSales('2016', 75),
          new OrdinalSales('2017', 100),
        ];
    
        return [
          new charts.Series<OrdinalSales, String>(
            id: 'Desktop',
            domainFn: (OrdinalSales sales, _) => sales.year,
            measureFn: (OrdinalSales sales, _) => sales.sales,
            data: desktopSalesData,
          ),
          new charts.Series<OrdinalSales, String>(
            id: 'Tablet',
            domainFn: (OrdinalSales sales, _) => sales.year,
            measureFn: (OrdinalSales sales, _) => sales.sales,
            data: tableSalesData,
          )
        ];
      }
    }
    
  4. 数据模型类

    class OrdinalSales {
      final String year;
      final int sales;
    
      OrdinalSales(this.year, this.sales);
    }
    

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

1 回复

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


charts_common_updated 是一个用于在 Flutter 中绘制图表的插件。它基于 charts_flutter,提供了一套丰富的图表类型和配置选项,可以轻松地创建各种图表,如折线图、柱状图、饼图等。以下是如何使用 charts_common_updated 插件的基本步骤:

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 charts_common_updated 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  charts_common_updated: ^0.10.0  # 请根据最新版本号进行替换

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

2. 导入库

在你需要使用图表的 Dart 文件中,导入 charts_common_updated 库:

import 'package:charts_common_updated/charts_common_updated.dart' as charts;

3. 创建数据模型

为了绘制图表,你需要定义一个数据模型。通常,这个模型会包含要绘制的数据点。

class SalesData {
  final String year;
  final int sales;

  SalesData(this.year, this.sales);
}

4. 准备数据

接下来,准备一些数据用于绘制图表:

final data = [
  SalesData('2017', 35),
  SalesData('2018', 50),
  SalesData('2019', 75),
  SalesData('2020', 90),
  SalesData('2021', 110),
];

5. 创建图表

使用 charts.Series 来定义图表的数据系列,并使用 charts.BarChart 或其他图表类型来绘制图表。

class SimpleBarChart extends StatelessWidget {
  final List<SalesData> data;

  SimpleBarChart(this.data);

  @override
  Widget build(BuildContext context) {
    List<charts.Series<SalesData, String>> series = [
      charts.Series(
        id: "Sales",
        data: data,
        domainFn: (SalesData sales, _) => sales.year,
        measureFn: (SalesData sales, _) => sales.sales,
      )
    ];

    return charts.BarChart(
      series,
      animate: true,
    );
  }
}

6. 在 UI 中使用图表

最后,在你的 UI 中使用 SimpleBarChart

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Charts Demo'),
      ),
      body: Center(
        child: SimpleBarChart(data),
      ),
    );
  }
}

7. 运行应用

现在,你可以运行你的 Flutter 应用,看到绘制的柱状图。

其他图表类型

除了柱状图,charts_common_updated 还支持其他类型的图表,如折线图、饼图等。你可以通过替换 charts.BarChartcharts.LineChartcharts.PieChart 来绘制不同类型的图表。

例如,绘制折线图:

return charts.LineChart(
  series,
  animate: true,
);

绘制饼图:

return charts.PieChart(
  series,
  animate: true,
);
回到顶部