flutter图表charts_flutter 0.12.0

2023-11-07 17:50
文章标签 图表 flutter charts 0.12

本文主要是介绍flutter图表charts_flutter 0.12.0,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目中要实现环形图、饼图、柱形图、折线图,用到了charts_flutter,先看实现效果吧。项目中在使用折线图时自定义了横坐标。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
pub.dev的地址
github地址
案例页面
1、在pubspec.yaml中添加依赖:

dependencies:charts_flutter: ^0.12.0

2、创建文件并使用,完整代码如下

import 'dart:math';import 'package:charts_flutter/flutter.dart' as charts;
import 'package:flutter/material.dart';class DataStatistics2 extends StatefulWidget {final Map param;DataStatistics2({this.param});_DataStatisticsState createState() => _DataStatisticsState();
}class _DataStatisticsState extends State<DataStatistics2> {Widget build(BuildContext context) {return Container(color: Colors.white,margin: EdgeInsets.all(20.0),child: SingleChildScrollView(child: Column(children: [Container(height: 180, width: double.infinity, child: _lineChart()),Container(height: 180, width: double.infinity, child: _barChart()),Container(height: 180, width: double.infinity, child: _pieChart()),Container(height: 180, width: double.infinity, child: _pieChart1())])));}Widget _lineChart() {List _list = ['1', '2', '3', '4'];var serial1data = [new SeriesData(0, 10),new SeriesData(1, 3),new SeriesData(2, 2),new SeriesData(3, 1),// new SeriesData(5, 10),];//自定义x轴final ticks = [charts.TickSpec(0, label: _list[0]),charts.TickSpec(1, label: _list[1]),charts.TickSpec(2, label: _list[2]),charts.TickSpec(3, label: _list[3]),];var seriesList = [charts.Series<SeriesData, int>(id: '登录次数',colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,domainFn: (SeriesData sales, _) => sales.day,measureFn: (SeriesData sales, _) => sales.count,data: serial1data,),];return charts.LineChart(seriesList,animate: true,domainAxis: new charts.NumericAxisSpec(tickProviderSpec: new charts.StaticNumericTickProviderSpec(ticks),tickFormatterSpec: charts.BasicNumericTickFormatterSpec((measure) => exp(measure).round().toString()),),);}//柱形图Widget _barChart() {var data = [PieSales(0, 10, 'item1', charts.ColorUtil.fromDartColor(Color(0xFF265AFD))),PieSales(1, 3, 'item2', charts.ColorUtil.fromDartColor(Color(0xFF265AFD))),PieSales(2, 2, 'item3', charts.ColorUtil.fromDartColor(Color(0xFF265AFD))),PieSales(3, 1, 'item4', charts.ColorUtil.fromDartColor(Color(0xFF265AFD))),];int num = 10 + 3 + 2 + 1;var seriesList = [charts.Series<PieSales, String>(id: 'Sales',colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,domainFn: (PieSales sales, _) => sales.name,measureFn: (PieSales sales, _) => sales.sales,fillColorFn: (PieSales sales, _) => sales.color,data: data,labelAccessorFn: (PieSales sales, _) =>'${sales.sales}人,${(sales.sales / num * 100).toStringAsFixed(0)}%',)];return charts.BarChart(seriesList,//进来动画效果animate: false,// 横向展示barGroupingType: charts.BarGroupingType.stacked,// 文本显示barRendererDecorator: new charts.BarLabelDecorator<String>(),);}//饼图Widget _pieChart() {var data = [PieSales(0, 10, 'item1', charts.ColorUtil.fromDartColor(Color(0xFF58A3FF))),PieSales(1, 3, 'item2', charts.ColorUtil.fromDartColor(Color(0xFF51DBB6))),PieSales(2, 2, 'item3', charts.ColorUtil.fromDartColor(Color(0xFF58A3FF))),PieSales(3, 1, 'item4', charts.ColorUtil.fromDartColor(Color(0xFF51DBB6))),];int num = 10 + 3 + 2 + 1;var seriesList = [charts.Series<PieSales, int>(id: 'Sales',domainFn: (PieSales sales, _) => sales.domain,measureFn: (PieSales sales, _) => sales.sales,colorFn: (PieSales sales, _) => sales.color,data: data,displayName: '57',labelAccessorFn: (PieSales row, _) =>'${row.name}${row.sales}人\n ${(row.sales / num * 100).toStringAsFixed(0)}%',)];return Stack(children: [charts.PieChart(seriesList,animate: false, //进来动画效果// 下方圆点// behaviors: [new charts.DatumLegend(//   position: charts.BehaviorPosition.bottom,// )],defaultRenderer: new charts.ArcRendererConfig(// 线arcRendererDecorators: [new charts.ArcLabelDecorator(labelPosition: charts.ArcLabelPosition.outside,)]))],);}//环形图Widget _pieChart1() {List _pieList = [10, 3, 2, 1];var data = [PieSales(0, _pieList[0], 'item1',charts.ColorUtil.fromDartColor(Color(0xFF58A3FF))),PieSales(1, _pieList[1], 'item2',charts.ColorUtil.fromDartColor(Color(0xFF51DBB6))),PieSales(2, _pieList[2], 'item3',charts.ColorUtil.fromDartColor(Color(0xFF58A3FF))),PieSales(3, _pieList[3], 'item4',charts.ColorUtil.fromDartColor(Color(0xFF51DBB6))),];int _personNum = 0;_pieList.forEach((element) {_personNum += element;});var seriesList = [charts.Series<PieSales, int>(id: 'Sales',domainFn: (PieSales sales, _) => sales.domain,measureFn: (PieSales sales, _) => sales.sales,colorFn: (PieSales sales, _) => sales.color,data: data,displayName: '50',labelAccessorFn: (PieSales row, _) =>"${row.name}\n${(row.sales / _personNum * 100).toStringAsFixed(0)}%",// labelAccessorFn: (PieSales row, _) =>// '${row.name} ${row.sales}人 ${(row.sales / _personNum * 100).toStringAsFixed(0)}%',)];return Stack(children: [charts.PieChart(seriesList,animate: false, //进来动画效果// 下方圆点// behaviors: [new charts.DatumLegend(//   position: charts.BehaviorPosition.bottom,// )],defaultRenderer: new charts.ArcRendererConfig(arcWidth: 20,// 线arcRendererDecorators: [new charts.ArcLabelDecorator(labelPosition: charts.ArcLabelPosition.outside,)])),// 中心文字Center(child: Column(crossAxisAlignment: CrossAxisAlignment.center,mainAxisAlignment: MainAxisAlignment.center,children: [Text('$_personNum',style: TextStyle(fontSize: 15),),Text('人员统计',style: TextStyle(fontSize: 14),),],))],);}
}class SeriesData {final int day;final int count;SeriesData(this.day, this.count);
}//饼状图 自定义颜色
class PieSales {final int domain;final int sales;final String name;final charts.Color color;PieSales(this.domain, this.sales, this.name, this.color);
}

这篇关于flutter图表charts_flutter 0.12.0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/365308

相关文章

Flutter实现文字镂空效果的详细步骤

《Flutter实现文字镂空效果的详细步骤》:本文主要介绍如何使用Flutter实现文字镂空效果,包括创建基础应用结构、实现自定义绘制器、构建UI界面以及实现颜色选择按钮等步骤,并详细解析了混合模... 目录引言实现原理开始实现步骤1:创建基础应用结构步骤2:创建主屏幕步骤3:实现自定义绘制器步骤4:构建U

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

Python如何在Word中生成多种不同类型的图表

《Python如何在Word中生成多种不同类型的图表》Word文档中插入图表不仅能直观呈现数据,还能提升文档的可读性和专业性,本文将介绍如何使用Python在Word文档中创建和自定义各种图表,需要的... 目录在Word中创建柱形图在Word中创建条形图在Word中创建折线图在Word中创建饼图在Word

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn

Java实战之利用POI生成Excel图表

《Java实战之利用POI生成Excel图表》ApachePOI是Java生态中处理Office文档的核心工具,这篇文章主要为大家详细介绍了如何在Excel中创建折线图,柱状图,饼图等常见图表,需要的... 目录一、环境配置与依赖管理二、数据源准备与工作表构建三、图表生成核心步骤1. 折线图(Line Ch

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

Flutter Button使用

Material 组件库中有多种按钮组件如ElevatedButton、TextButton、OutlineButton等,它们的父类是于ButtonStyleButton。         基本的按钮特点:         1.按下时都会有“水波文动画”。         2.onPressed属性设置点击回调,如果不提供该回调则按钮会处于禁用状态,禁用状态不响应用户点击。