欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > flutter使用echarts

flutter使用echarts

2024/10/24 18:23:49 来源:https://blog.csdn.net/weixin_43647163/article/details/141723237  浏览:    关键词:flutter使用echarts

echarts 配置参数跟 web 配置是一样,可以参考 web 端官网 来配置,flutter_echarts 采用的是 webview 来加载 html,所以需要安装 webview_flutter

1.引入依赖

dependencies:flutter_echarts: ^0.0.1webview_flutter: ^0.3.20+3

3.使用

onLoad 回调可以获取到 webview 的 controller,通过 controller 来调用 js 方法
例如调用_controller?.reload() 就可以实现重新渲染图表

import 'dart:convert';import 'package:flutter/material.dart';
import 'package:flutter_echarts/flutter_echarts.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'dart:math' as math;class TodayEcharts extends StatefulWidget {const TodayEcharts({super.key});State<TodayEcharts> createState() => _TodayEchartsState();
}class _TodayEchartsState extends State<TodayEcharts> {late  WebViewController _controller;List<Map<String, Object>> _data1 = [{'name': 'Please wait', 'value': 0}];getData1() async {await Future.delayed(const Duration(seconds: 4));List<Map<String, Object>> dataObj = [];for (var i = 0; i < 7; i++) {int randomInt = math.Random().nextInt(100);dataObj.add({'name': 'Jan$i','value': randomInt,},);}if (mounted) {setState(() {_data1 = dataObj;});}}void initState() {super.initState();getData1();}void dispose() {super.dispose();}Widget build(BuildContext context) {List nameList = _data1.map((item) => item['name']).toList();List valueList = _data1.map((item) => item['value']).toList();return SizedBox(width: MediaQuery.of(context).size.width,height: 450,child: Echarts(option: jsonEncode({"legend": {"x": 'center',"y": 'bottom',"show": true,"textStyle": {//图例的公用文本样式。"fontSize": 14,"color": "#333",},"itemGap": 20, //图例每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。"data": ['项目金额(万元)', '项目数量'], //图例的数据数组。"inactiveColor": '#ccc',},"xAxis": {//X轴数据"type": "category","data": nameList,},"yAxis": [{//Y轴数据"type": "value","splitNumber": "5","name": "万元","axisLabel": {"color": '#027eff' // 修饰刻度标签的颜色},"nameTextStyle": {"color": "#027eff",}},{"type": 'value',"min": '0', //最小坐标"max": '12', //最大坐标"splitLine": {"show": false //是否显示分隔线。},"name": "个","axisLabel": {"color": '#FF9800' // 修饰刻度标签的颜色},"nameTextStyle": {"color": "#FF9800",}}],"series": [{//对应点得值"name": "项目金额(万元)","data": valueList,"barWidth": '50%',"type": "bar","itemStyle": {"normal": {"barBorderRadius": 0,"color": {"type": 'linear',"x": 0,"y": 0,"x2": 0,"y2": 1,"colorStops": [{"offset": 0,"color": '#00feff',},{"offset": 1,"color": '#027eff',},{"offset": 1,"color": '#0286ff',},],},},}},],}),extraScript: '''chart.on('click', (params) => {if(params.componentType === 'series') {Messager.postMessage(JSON.stringify({type: 'select',payload: params.dataIndex,}));}});''',onLoad: (controller){_controller = controller;},reloadAfterInit: true,onMessage: (message) {print("点击图形信息$message");},),);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com