flutter_echarts

一个用于以响应式方式使用 Apache ECharts(孵化中)的 Flutter 小部件。

bar boxplot effectScatter funnel gague geo graph heatmap kline line liquid map parallel pie radar scatter wordCloud bar3D line3D sankey scatter3D surface3D themeRiver overlap

功能

注意:flutter_echarts 侧重于复杂的图表和交互。它通过 WebView 实现。如果您更喜欢更好的性能和功能,但更简单的图表,我们推荐这个纯 Flutter 可视化库:Graphic

响应式更新

Flutter 小部件和 React 组件最令人兴奋的功能是视图可以在数据更改时响应式更新。得益于 ECharts 的数据驱动架构,flutter_echarts 实现了一种响应式的方式来连接图表和数据。当 option 属性中的数据发生变化时,图表会自动重新渲染。

双向通信

onMessageextraScript 属性提供了一种在 Flutter 和 JavaScript 之间设置双向事件通信的方式。

可配置的扩展

ECharts 有很多扩展extensions 属性允许您将扩展脚本作为原始字符串注入。这样,您可以将这些脚本复制到您的源代码中,而无需被资产目录混淆。

安装

将此添加到您的 package 的 pubspec.yaml 文件中

dependencies:
  flutter_echarts: #latest version

现在,在您的 Dart 代码中,您可以使用

import 'package:flutter_echarts/flutter_echarts.dart';  

详情请参阅 pub.dev

用法

flutter_echarts 包本身使用起来非常简单,就像一个普通的 statelessWidget 一样。

有关 option 对象的详细信息,请参阅 Echarts 文档Echarts 示例

Container(
  child: Echarts(
  option: '''
    {
      xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
      },
      yAxis: {
        type: 'value'
      },
      series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
      }]
    }
  ''',
  ),
  width: 300,
  height: 250,
)

请参阅完整的 flutter_echarts_example

Widget 属性

选项

字符串

(必需)

ECharts 主要通过将字符串值传递给 JavaScript option 属性进行配置。

您可以使用 dart:convert 中的 jsonEncode() 函数将 Dart 对象形式的数据转换为字符串。

source: ${jsonEncode(_data1)},

由于 JavaScript 中没有 ''',您可以使用此运算符来减少一些引号的转义。

Echarts(
  option: '''
  
    // option string
    
  ''',
),

要在 option 属性中使用图像,我们建议使用 Base64 Data URL

image: 'data:image/png;base64,iVBORw0KG...',

extraScript

字符串

Echarts.init() 之后,但在任何 chart.setOption() 之前执行的 JavaScript。该小部件有一个名为 Messager 的 JavaScript 通道,因此您可以使用此标识符从 JavaScript 向 Flutter 发送消息。

extraScript: '''
  chart.on('click', (params) => {
    if(params.componentType === 'series') {
        Messager.postMessage('anything');
    }
  });
''',

onMessage

void Function(String)

用于处理 extraScriptMessager.postMessage() 发送的消息的回调函数。

extensions

List<String>

字符串列表,来自 Echarts 扩展,例如主题、组件、WebGL 和语言。您可以从官方 ECharts 扩展列表下载它们。将扩展作为原始字符串插入。

const liquidPlugin = r'''

  // copy from liquid.min.js

''';

theme

字符串

您可以下载内置的 ECharts 主题,或使用ECharts 主题生成器构建自己的自定义主题。将主题脚本复制到 extensions 参数中,并使用此参数注册主题名称。

captureAllGestures

布尔值

(默认为:false)

captureAllGestures 设置为 true 对于处理 3D 旋转和数据缩放条很有用。请注意,设置此选项会阻止 ListView 等容器响应图表上的手势。

如果为 true,则 captureHorizontalGesturescaptureVerticalGestures 会被强制为 true。

captureHorizontalGestures

布尔值

(默认为:false)

仅捕获水平手势。

captureVerticalGestures

布尔值

(默认为:false)

仅捕获垂直手势。

onLoad

void Function()

图表首次加载和渲染时的回调。

GitHub

https://github.com/entronad/flutter_echarts