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);
}
代码解释
-
导入依赖:
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); }
更多关于Flutter图表绘制插件charts_common_updated的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于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.BarChart
为 charts.LineChart
或 charts.PieChart
来绘制不同类型的图表。
例如,绘制折线图:
return charts.LineChart(
series,
animate: true,
);
绘制饼图:
return charts.PieChart(
series,
animate: true,
);