Flutter图表绘制插件charts_flutter_new的使用
Flutter图表绘制插件charts_flutter_new的使用
charts_flutter_new
是一个用 Dart 编写的 Material Design 数据可视化库。它可以让你在 Flutter 应用程序中轻松创建各种图表。
支持的图表
支持的图表类型可以在 在线画廊 中查看。
使用该库
charts_flutter_new
的示例代码可以在 GitHub 仓库的 /example/
文件夹中找到。
示例代码
以下是一个简单的示例,展示了如何在 Flutter 应用程序中使用 charts_flutter_new
插件来创建一个基本的柱状图。
// Copyright 2018 the Charts project authors. Please see the AUTHORS file
// for details.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import 'package:flutter/material.dart';
import 'app_config.dart';
import 'home.dart';
/// 主应用组件。
class GalleryApp extends StatefulWidget {
GalleryApp({Key? key}) : super(key: key);
@override
GalleryAppState createState() => new GalleryAppState();
}
/// 主应用状态。
///
/// 控制性能覆盖,并实例化一个 [Home] 组件。
class GalleryAppState extends State<GalleryApp> {
// 初始化应用设置。
bool _showPerformanceOverlay = defaultConfig.showPerformanceOverlay;
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: defaultConfig.appName,
theme: defaultConfig.theme,
showPerformanceOverlay: _showPerformanceOverlay,
home: new Home(
showPerformanceOverlay: _showPerformanceOverlay,
onShowPerformanceOverlayChanged: (bool value) {
setState(() {
_showPerformanceOverlay = value;
});
},
));
}
}
void main() {
runApp(new GalleryApp());
}
具体图表绘制示例
接下来展示一个具体的柱状图绘制示例:
import 'package:flutter/material.dart';
import 'package:charts_flutter_new/flutter.dart' as charts;
class SimpleBarChart extends StatelessWidget {
final List<charts.Series<OrdinalSales, String>> seriesList;
final bool animate;
SimpleBarChart(this.seriesList, {this.animate});
/// Creates a [BarChart] with sample data and no transition.
factory SimpleBarChart.withSampleData() {
return new SimpleBarChart(
_createSampleData(),
// Disable animations for image tests.
animate: false,
);
}
@override
Widget build(BuildContext context) {
return new charts.BarChart(
seriesList,
animate: animate,
);
}
/// Create one series with sample hard coded data.
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),
];
final mobileSalesData = [
new OrdinalSales('2014', 10),
new OrdinalSales('2015', 15),
new OrdinalSales('2016', 50),
new OrdinalSales('2017', 20),
];
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,
),
new charts.Series<OrdinalSales, String>(
id: 'Mobile',
domainFn: (OrdinalSales sales, _) => sales.year,
measureFn: (OrdinalSales sales, _) => sales.sales,
data: mobileSalesData,
)
];
}
}
/// Sample ordinal data type.
class OrdinalSales {
final String year;
final int sales;
OrdinalSales(this.year, this.sales);
}
在这个示例中,我们定义了一个 SimpleBarChart
类,它接受一系列数据并生成一个柱状图。我们通过 _createSampleData
方法创建了三个系列的数据,每个系列代表不同设备类型的销售数据。BarChart
将这些数据渲染为柱状图。
运行示例
将上述代码添加到你的 Flutter 应用程序中,并确保你已经将 charts_flutter_new
添加到你的 pubspec.yaml
文件中:
dependencies:
flutter:
sdk: flutter
charts_flutter_new: ^0.12.0
更多关于Flutter图表绘制插件charts_flutter_new的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter图表绘制插件charts_flutter_new的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter应用中使用charts_flutter_new
(假设你指的是Google的charts_flutter
包,因为charts_flutter_new
并不是官方包名,但用法类似)来绘制简单图表的代码案例。
首先,确保你已经在pubspec.yaml
文件中添加了charts_flutter
依赖:
dependencies:
flutter:
sdk: flutter
charts_flutter: ^0.12.0 # 请检查最新版本号
然后,运行flutter pub get
来安装依赖。
接下来是一个简单的例子,演示如何使用charts_flutter
包绘制一个柱状图(Bar Chart)。
main.dart
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(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Charts Demo'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
List<charts.Series<MyData, String>> seriesList = _createSampleData();
var chart = charts.BarChart(
seriesList,
animate: true,
barGroupingType: charts.BarGroupingType.grouped,
);
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Container(
child: chart,
width: 800,
height: 400,
),
),
);
}
List<charts.Series<MyData, String>> _createSampleData() {
final data = [
MyData('2023-10-01', 5),
MyData('2023-10-02', 15),
MyData('2023-10-03', 25),
MyData('2023-10-04', 35),
MyData('2023-10-05', 45),
];
return [
charts.Series<MyData, String>(
id: 'Sales',
domainFn: (MyData sales, _) => sales.dateTime,
measureFn: (MyData sales, _) => sales.sales,
data: data,
),
];
}
}
class MyData {
final String dateTime;
final int sales;
MyData(this.dateTime, this.sales);
}
解释
- 依赖管理:在
pubspec.yaml
中添加charts_flutter
依赖。 - 数据模型:创建一个
MyData
类来表示每个数据点,包含日期(作为字符串)和销售数量(作为整数)。 - 数据生成:在
_createSampleData
方法中,创建一个包含示例数据的列表。 - 图表配置:使用
charts.Series
配置数据系列,包括数据的ID、域函数(用于提取X轴值)、度量函数(用于提取Y轴值)和数据列表。 - 图表构建:使用
charts.BarChart
构建柱状图,并指定动画和分组类型。 - 布局:将图表放置在
Scaffold
的body
中,并使用Container
指定图表的宽度和高度。
运行这个代码,你应该会看到一个简单的柱状图,展示了连续几天的销售数据。
请注意,charts_flutter
包可能会更新,因此确保查阅最新的文档和示例以适应任何API更改。