Flutter图表绘制插件xb_chart的使用
Flutter图表绘制插件xb_chart的使用
本文将详细介绍如何在Flutter应用中使用xb_chart
插件来绘制不同的图表,包括折线图、环形图和柱状图。
折线图 (xb_line_chart)
示例代码
import 'package:example/line_chart/line_chart_vm.dart';
import 'package:flutter/material.dart';
import 'package:xb_scaffold/xb_scaffold.dart';
import 'package:xb_chart/xb_chart.dart';
class LineChart extends XBPage<LineChartVM> {
const LineChart({super.key});
[@override](/user/override)
generateVM(BuildContext context) {
return LineChartVM(context: context);
}
[@override](/user/override)
String setTitle(LineChartVM vm) {
return "折线图demo";
}
String dateStr(DateTime beginDate, int offset) {
final date = beginDate.add(Duration(days: offset));
final dateStr = xbLineChartConvertDateToString(date);
return dateStr;
}
[@override](/user/override)
Widget buildPage(vm, BuildContext context) {
final beginDate = DateTime.now();
final models = [
XBLineChartModel(
name: '张益达',
color: Colors.orange,
values: [10, 20, 1, 95, 38, 109, 127, 18, 98]),
XBLineChartModel(
name: '吕小布',
color: Colors.green,
values: [11, 26, 21, 35, 78, 19, 172, 22, 31]),
XBLineChartModel(
name: '曾小贤',
color: Colors.blue,
values: [57, 46, 100, 139, 88, 49, 72, 112, 21]),
XBLineChartModel(
name: '吴彦祖',
color: Colors.greenAccent,
values: [75, 64, 103, 39, 198, 219, 28, 122, 88]),
XBLineChartModel(
name: '张震',
color: Colors.deepPurple,
values: [35, 74, 93, 31, 34, 19, 18, 133, 188]),
XBLineChartModel(
name: '金城武',
color: Color.fromARGB(255, 156, 154, 157),
values: [78, 49, 27, 67, 36, 87, 103, 135, 75]),
XBLineChartModel(
name: '程冠希',
color: Color.fromARGB(255, 26, 121, 76),
values: [82, 120, 101, 56, 109, 187, 113, 235, 175])
];
int maxValuesCount = 0;
for (var element in models) {
final tempLen = element.values.length;
if (tempLen > maxValuesCount) {
maxValuesCount = tempLen;
}
}
List<XBLineChartXTitle> xTitles = [];
for (int i = 0; i < maxValuesCount; i++) {
xTitles.add(XBLineChartXTitle(text: dateStr(beginDate, i), isShow: i % 2 == 0));
}
return Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(10),
child: Container(
color: Colors.white,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: XBLineChart(
yTitleCount: 8,
xTitles: xTitles,
models: models,
),
),
),
),
),
);
}
}
效果图
环形图 (xb_annulus_chart)
示例代码
import 'package:flutter/material.dart';
import 'package:xb_custom_widget_cabin/annulus_chart/annulus_chart_vm.dart';
import 'package:xb_custom_widget_cabin/annulus_chart/xb_annulus_chart/xb_annulus_chart.dart';
import 'package:xb_custom_widget_cabin/annulus_chart/xb_annulus_chart/xb_annulus_chart_model.dart';
import 'package:xb_scaffold/xb_scaffold.dart';
class AnnulusChart extends XBPage<AnnulusChartVM> {
const AnnulusChart({super.key});
[@override](/user/override)
generateVM(BuildContext context) {
return AnnulusChartVM(context: context);
}
[@override](/user/override)
String setTitle(AnnulusChartVM vm) {
return "环形图demo";
}
[@override](/user/override)
Widget buildPage(vm, BuildContext context) {
final models = [
XBAnnulusChartModel(name: '张益达', color: Colors.orange, value: 10),
XBAnnulusChartModel(name: 'snack', color: Colors.purple, value: 10),
XBAnnulusChartModel(name: '吕小布', color: Colors.green, value: 10),
XBAnnulusChartModel(name: '曾小贤', color: Colors.blue, value: 10),
XBAnnulusChartModel(name: '吴彦祖', color: Colors.greenAccent, value: 10),
XBAnnulusChartModel(name: '张震', color: Colors.red, value: 10)
];
return Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(10),
child: Container(
color: Colors.white,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: XBAnnulusChart(
annulusRadius: 100,
models: models,
),
),
),
),
),
);
}
}
效果图
柱状图 (xb_histogram_chart)
示例代码
import 'package:flutter/material.dart';
import 'package:xb_custom_widget_cabin/histogram_chart/histogram_chart_vm.dart';
import 'package:xb_custom_widget_cabin/histogram_chart/xb_histogram_chart/xb_histogram_chart.dart';
import 'package:xb_custom_widget_cabin/histogram_chart/xb_histogram_chart/xb_histogram_chart_y_model.dart';
import 'package:xb_scaffold/xb_scaffold.dart';
class HistogramChart extends XBPage<HistogramChartVM> {
const HistogramChart({super.key});
[@override](/user/override)
generateVM(BuildContext context) {
return HistogramChartVM(context: context);
}
[@override](/user/override)
String setTitle(HistogramChartVM vm) {
return "柱状图demo";
}
[@override](/user/override)
Widget buildPage(vm, BuildContext context) {
final models = [
XBHistogramYModel(name: '张益达', value: 10),
XBHistogramYModel(name: 'snack', value: 9),
XBHistogramYModel(name: '吕小布', value: 8),
XBHistogramYModel(name: '曾小贤', value: 7),
XBHistogramYModel(name: '吴彦祖', value: 6),
XBHistogramYModel(name: '张震', value: 5)
];
return Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(10),
child: Container(
color: Colors.white,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: XBHistogram(yModels: models),
),
),
),
),
);
}
}
更多关于Flutter图表绘制插件xb_chart的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter图表绘制插件xb_chart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
xb_chart
是一个用于在 Flutter 中绘制图表的插件,支持多种图表类型,如折线图、柱状图、饼图等。它提供了丰富的自定义选项,可以帮助开发者快速构建美观且功能强大的图表。
安装
首先,你需要在 pubspec.yaml
文件中添加 xb_chart
依赖:
dependencies:
flutter:
sdk: flutter
xb_chart: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
基本使用
1. 折线图
import 'package:flutter/material.dart';
import 'package:xb_chart/xb_chart.dart';
class LineChartExample extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Line Chart Example'),
),
body: Center(
child: XBLineChart(
data: [
XBLineData(value: 10, label: 'Jan'),
XBLineData(value: 20, label: 'Feb'),
XBLineData(value: 30, label: 'Mar'),
XBLineData(value: 40, label: 'Apr'),
XBLineData(value: 50, label: 'May'),
],
lineColor: Colors.blue,
pointColor: Colors.red,
showGrid: true,
),
),
);
}
}
2. 柱状图
import 'package:flutter/material.dart';
import 'package:xb_chart/xb_chart.dart';
class BarChartExample extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Bar Chart Example'),
),
body: Center(
child: XBBarChart(
data: [
XBBarData(value: 10, label: 'Jan'),
XBBarData(value: 20, label: 'Feb'),
XBBarData(value: 30, label: 'Mar'),
XBBarData(value: 40, label: 'Apr'),
XBBarData(value: 50, label: 'May'),
],
barColor: Colors.green,
showValue: true,
),
),
);
}
}
3. 饼图
import 'package:flutter/material.dart';
import 'package:xb_chart/xb_chart.dart';
class PieChartExample extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Pie Chart Example'),
),
body: Center(
child: XBPieChart(
data: [
XBPieData(value: 30, label: 'Red', color: Colors.red),
XBPieData(value: 20, label: 'Blue', color: Colors.blue),
XBPieData(value: 50, label: 'Green', color: Colors.green),
],
showLabel: true,
),
),
);
}
}