Flutter图表绘制插件charts_common_new的使用

Flutter图表绘制插件charts_common_new的使用

charts_common_new 是一个用于在 Flutter 应用中绘制图表的库。它提供了丰富的图表组件,可以帮助开发者快速地实现各种类型的图表。

开始使用

首先,你需要将 charts_common_new 添加到你的项目依赖中。打开 pubspec.yaml 文件并添加以下内容:

dependencies:
  charts_common_new: ^0.12.0

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

基本示例

接下来,我们将通过一个简单的例子来展示如何使用 charts_common_new 绘制折线图。

示例代码

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('Charts Example'),
        ),
        body: Center(
          child: SimpleLineChart.withSampleData(),
        ),
      ),
    );
  }
}

class SimpleLineChart extends StatelessWidget {
  final List<charts.Series> seriesList;
  final bool animate;

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

  /// Creates a [LineChart] with sample data and no transition.
  factory SimpleLineChart.withSampleData() {
    return new SimpleLineChart(
      _createSampleData(),
      // Disable animations for image tests.
      animate: false,
    );
  }

  @override
  Widget build(BuildContext context) {
    return new charts.LineChart(
      seriesList,
      animate: animate,
    );
  }

  /// Create one series with sample hard coded data.
  static List<charts.Series<LinearSales, int>> _createSampleData() {
    final data = [
      new LinearSales(0, 5),
      new LinearSales(1, 25),
      new LinearSales(2, 100),
      new LinearSales(3, 75),
    ];

    return [
      new charts.Series<LinearSales, int>(
        id: 'Sales',
        colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
        domainFn: (LinearSales sales, _) => sales.year,
        measureFn: (LinearSales sales, _) => sales.sales,
        data: data,
      )
    ];
  }
}

/// Sample linear data type.
class LinearSales {
  final int year;
  final int sales;

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

代码解释

  • 导入必要的包

    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('Charts Example'),
            ),
            body: Center(
              child: SimpleLineChart.withSampleData(),
            ),
          ),
        );
      }
    }
    
  • 定义折线图类

    class SimpleLineChart extends StatelessWidget {
      final List<charts.Series> seriesList;
      final bool animate;
    
      SimpleLineChart(this.seriesList, {this.animate});
    
      /// 创建具有样本数据的简单折线图
      factory SimpleLineChart.withSampleData() {
        return new SimpleLineChart(
          _createSampleData(),
          // 禁用动画以进行图像测试
          animate: false,
        );
      }
    
      @override
      Widget build(BuildContext context) {
        return new charts.LineChart(
          seriesList,
          animate: animate,
        );
      }
    
      /// 创建包含示例硬编码数据的一个系列
      static List<charts.Series<LinearSales, int>> _createSampleData() {
        final data = [
          new LinearSales(0, 5),
          new LinearSales(1, 25),
          new LinearSales(2, 100),
          new LinearSales(3, 75),
        ];
    
        return [
          new charts.Series<LinearSales, int>(
            id: 'Sales',
            colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
            domainFn: (LinearSales sales, _) => sales.year,
            measureFn: (LinearSales sales, _) => sales.sales,
            data: data,
          )
        ];
      }
    }
    
  • 定义数据模型

    /// 示例线性数据类型
    class LinearSales {
      final int year;
      final int sales;
    
      LinearSales(this.year, this.sales);
    }
    

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

1 回复

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


charts_common_new 是一个用于在 Flutter 中绘制各种图表的插件。它提供了丰富的图表类型和自定义选项,可以满足大多数数据可视化的需求。以下是使用 charts_common_new 插件的基本步骤和示例代码。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  charts_common_new: ^0.12.0  # 请使用最新版本

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

2. 导入包

在你的 Dart 文件中导入 charts_common_new 包:

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

3. 创建图表数据

图表需要数据来渲染。你可以创建一个 charts.Series 对象来表示数据。以下是一个简单的示例:

class SalesData {
  final String year;
  final int sales;

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

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

final series = [
  charts.Series<SalesData, String>(
    id: 'Sales',
    domainFn: (SalesData sales, _) => sales.year,
    measureFn: (SalesData sales, _) => sales.sales,
    data: data,
  )
];

4. 创建图表

使用 charts.BarChartcharts.LineChart 或其他图表类型来创建图表。以下是一个简单的柱状图示例:

import 'package:flutter/material.dart';

class BarChartExample extends StatelessWidget {
  final List<charts.Series<SalesData, String>> seriesList;

  BarChartExample(this.seriesList);

  @override
  Widget build(BuildContext context) {
    return charts.BarChart(
      seriesList,
      animate: true,
    );
  }
}

5. 在 Flutter 应用中使用图表

在你的 Flutter 应用中使用上面创建的图表组件:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Charts Example'),
        ),
        body: Center(
          child: BarChartExample(series),
        ),
      ),
    );
  }
}

6. 自定义图表

charts_common_new 提供了丰富的自定义选项。你可以通过设置不同的属性来调整图表的外观和行为。例如:

charts.BarChart(
  seriesList,
  animate: true,
  behaviors: [
    charts.SlidingViewport(),
    charts.PanAndZoomBehavior(),
  ],
  domainAxis: charts.OrdinalAxisSpec(
    renderSpec: charts.SmallTickRendererSpec(
      labelRotation: 45,
    ),
  ),
  primaryMeasureAxis: charts.NumericAxisSpec(
    renderSpec: charts.GridlineRendererSpec(
      labelStyle: charts.TextStyleSpec(
        fontSize: 14,
        color: charts.MaterialPalette.black,
      ),
    ),
  ),
);

7. 其他图表类型

除了柱状图,charts_common_new 还支持多种图表类型,例如:

  • charts.LineChart 折线图
  • charts.PieChart 饼图
  • charts.ScatterPlotChart 散点图
  • charts.TimeSeriesChart 时间序列图

你可以根据需要选择合适的图表类型。

8. 处理交互

charts_common_new 还支持用户交互,例如点击、拖拽等。你可以通过添加 behaviors 来启用这些功能:

behaviors: [
  charts.SelectNearest(),
  charts.DomainHighlighter(),
],
回到顶部