Flutter图表绘制插件charts_common_new_gennissi的使用

Flutter图表绘制插件charts_common_new_gennissi的使用

在Flutter中,charts_common_new_gennissi 是一个非常强大的图表绘制库。它提供了多种图表类型,并且可以通过简单的配置来实现复杂的图表展示功能。

安装

首先,在您的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  charts_common_new_gennissi: ^x.x.x

然后运行以下命令以获取依赖:

flutter pub get

使用示例

线图 (Line Chart)

以下是一个简单的线图示例:

import 'package:flutter/material.dart';
import 'package:charts_common_new_gennissi/common/line_chart.dart' as charts;

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Charts Example'),
        ),
        body: LineChartExample(),
      ),
    );
  }
}

class LineChartExample extends StatelessWidget {
  final List<charts.Series<LinearSales, int>> seriesList = [
    charts.Series(
      id: 'Sales',
      data: [
        LinearSales(year: 0, sales: 5),
        LinearSales(year: 1, sales: 25),
        LinearSales(year: 2, sales: 100),
        LinearSales(year: 3, sales: 75),
      ],
      domainFn: (LinearSales sales, _) => sales.year,
      measureFn: (LinearSales sales, _) => sales.sales,
    )
  ];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        height: 400,
        child: charts.LineChart(
          seriesList,
          animate: true,
        ),
      ),
    );
  }
}

class LinearSales {
  final int year;
  final int sales;

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

柱状图 (Bar Chart)

以下是一个简单的柱状图示例:

import 'package:flutter/material.dart';
import 'package:charts_common_new_gennissi/common/bar_chart.dart' as charts;

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Charts Example'),
        ),
        body: BarChartExample(),
      ),
    );
  }
}

class BarChartExample extends StatelessWidget {
  final List<charts.Series<OrdinalSales, String>> seriesList = [
    charts.Series(
      id: 'Sales',
      data: [
        OrdinalSales('2014', 5),
        OrdinalSales('2015', 25),
        OrdinalSales('2016', 100),
        OrdinalSales('2017', 75),
      ],
      domainFn: (OrdinalSales sales, _) => sales.year,
      measureFn: (OrdinalSales sales, _) => sales.sales,
    )
  ];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        height: 400,
        child: charts.BarChart(
          seriesList,
          animate: true,
        ),
      ),
    );
  }
}

class OrdinalSales {
  final String year;
  final int sales;

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

饼图 (Pie Chart)

以下是一个简单的饼图示例:

import 'package:flutter/material.dart';
import 'package:charts_common_new_gennissi/common/pie_chart.dart' as charts;

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Charts Example'),
        ),
        body: PieChartExample(),
      ),
    );
  }
}

class PieChartExample extends StatelessWidget {
  final List<charts.Series<Sales, String>> seriesList = [
    charts.Series(
      id: 'Sales',
      data: [
        Sales('2014', 5),
        Sales('2015', 25),
        Sales('2016', 100),
        Sales('2017', 75),
      ],
      domainFn: (Sales sales, _) => sales.year,
      measureFn: (Sales sales, _) => sales.sales,
    )
  ];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        height: 400,
        child: charts.PieChart(
          seriesList,
          animate: true,
        ),
      ),
    );
  }
}

class Sales {
  final String year;
  final int sales;

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

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

1 回复

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


charts_common_new_gennissi 是一个用于在 Flutter 中绘制图表的插件,它是 charts_flutter 的一个分支或变体,提供了丰富的图表类型和自定义选项。虽然它不是官方维护的插件,但它的使用方式与 charts_flutter 非常相似。

以下是如何在 Flutter 项目中使用 charts_common_new_gennissi 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  charts_common_new_gennissi: ^0.12.0  # 请根据实际情况选择版本

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

2. 导入插件

在需要使用图表的 Dart 文件中导入插件:

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

3. 创建图表数据

图表数据通常是一个包含 Series 的列表。Series 是图表中显示的一组数据点。

class SalesData {
  final String year;
  final int sales;

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

final data = [
  SalesData('2017', 100),
  SalesData('2018', 150),
  SalesData('2019', 200),
  SalesData('2020', 250),
  SalesData('2021', 300),
];

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

4. 创建并显示图表

使用 charts.BarChartcharts.LineChart 或其他图表类型来显示数据。

class MyChart extends StatelessWidget {
  final List<charts.Series<dynamic, String>> seriesList;

  MyChart(this.seriesList);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return charts.BarChart(
      seriesList,
      animate: true,
      domainAxis: charts.OrdinalAxisSpec(),
      primaryMeasureAxis: charts.NumericAxisSpec(),
    );
  }
}

5. 在应用中使用图表

最后,在你的 Flutter 应用中使用这个图表组件。

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Sales Chart')),
        body: Center(
          child: MyChart(series),
        ),
      ),
    );
  }
}

void main() => runApp(MyApp());

6. 自定义图表

charts_common_new_gennissi 提供了丰富的自定义选项,例如设置颜色、图例、轴标签等。你可以通过传递不同的参数来调整图表的外观和行为。

例如,设置图表的颜色:

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

7. 其他图表类型

除了条形图,charts_common_new_gennissi 还支持其他类型的图表,如折线图、饼图、面积图等。你可以根据需要选择不同的图表类型。

例如,创建一个折线图:

class MyLineChart extends StatelessWidget {
  final List<charts.Series<dynamic, String>> seriesList;

  MyLineChart(this.seriesList);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return charts.LineChart(
      seriesList,
      animate: true,
    );
  }
}
回到顶部