SuperAPI AI 工具集

syncfusion-flutter-pyramid-charts

前端与建站

查看项目

更新于 10-16 02:05

技能介绍

用途

Syncfusion Flutter 的 SfPyramidChart 用于在 Flutter 应用中以金字塔图形式展示数据。资料说明它可可视化比例型或层级型数据,呈现为堆叠的三角形分段,适用于销售漏斗、人口分布、组织层级以及流程阶段分析等场景。

主要能力

资料中列出的能力包括:

  • 金字塔定制:PyramidMode 可选 linear(按高度)或 surface(按面积);通过 height、width(百分比字符串)调整金字塔大小;用 gapRatio(0 到 1)设置分段间隙;炸裂分段(explode、explodeIndex、explodeOffset);调色板颜色、边框颜色与宽度、透明度以及 pointColorMapper。
  • 系列定制:animationDuration 与 animationDelay 动画;用 EmptyPointSettings 处理空值/空数据点,空点模式有 gap、zero、drop、average;按数据点映射颜色。
  • 数据标签:用 DataLabelSettings(isVisible: true) 启用;内部与外部定位(labelPosition);连接线设置(type、color、length);通过 builder 自定义标签模板;智能标签与 labelIntersectAction;溢出模式以及隐藏零值标签。
  • 图例与工具提示:启用并定位图例、图例标题、项目模板、溢出行为、点击图例切换系列可见性;用 TooltipBehavior 启用工具提示,支持格式化、自定义模板与激活模式。
  • 选中与回调:用 SelectionBehavior 启用分段选中、多选、切换选中、初始选中;通过 selectDataPoints 进行程序化选中;关键回调包括 onPointTap、onSelectionChanged、onTooltipRender;onRendererCreated 可配合 PyramidSeriesController 动态更新数据。
  • 外观、导出与 RTL:图表标题定制(ChartTitle);图表尺寸、边距、背景颜色/图片;导出为 PNG 图片或 PDF 文档;通过 Directionality 组件或 locale 支持 RTL;无障碍方面提及对比度、字号缩放、点击目标;pixelToPoint 方法用于坐标转换。

使用方式

资料给出的使用流程为:安装包并在 pubspec.yaml 中配置;导入 package:syncfusion_flutter_charts/charts.dart;初始化组件;通过 xValueMapper / yValueMapper 绑定数据源;再按需添加标题、数据标签、图例与工具提示。文档导航建议按主题查阅 references 目录下的:getting-started.md、pyramid-customization.md、series-customization.md、data-labels.md、legend-and-tooltip.md、selection-and-callbacks.md、appearance-export-rtl.md。

最小可运行示例(保留原代码):

import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_charts/charts.dart';

class PyramidChartExample extends StatelessWidget {
  final List<ChartData> chartData = [
    ChartData('Enterprise', 654),
    ChartData('Mid-Market', 575),
    ChartData('SMB', 446),
    ChartData('Startup', 341),
    ChartData('Individual', 160),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SfPyramidChart(
        title: ChartTitle(text: 'Sales Pipeline'),
        legend: Legend(isVisible: true),
        series: PyramidSeries<ChartData, String>(
          dataSource: chartData,
          xValueMapper: (ChartData data, _) => data.x,
          yValueMapper: (ChartData data, _) => data.y,
          dataLabelSettings: DataLabelSettings(isVisible: true),
        ),
      ),
    );
  }
}

class ChartData {
  ChartData(this.x, this.y);
  final String x;
  final double y;
}

常见用法片段(保留原代码):

炸裂指定分段:

PyramidSeries<ChartData, String>(
  explode: true,
  explodeIndex: 0,      // Index of segment to highlight
  explodeOffset: '5%',  // Distance the segment moves out
  dataSource: chartData,
  xValueMapper: (ChartData data, _) => data.x,
  yValueMapper: (ChartData data, _) => data.y,
)

surface 模式(按面积成比例):

PyramidSeries<ChartData, String>(
  pyramidMode: PyramidMode.surface,  // Area ∝ Y value (vs linear: height ∝ Y)
  dataSource: chartData,
  xValueMapper: (ChartData data, _) => data.x,
  yValueMapper: (ChartData data, _) => data.y,
)

工具提示与选中同时启用:

// In initState:
_tooltipBehavior = TooltipBehavior(enable: true);
_selectionBehavior = SelectionBehavior(enable: true);

// In widget:
SfPyramidChart(
  tooltipBehavior: _tooltipBehavior,
  series: PyramidSeries<ChartData, String>(
    selectionBehavior: _selectionBehavior,
    dataSource: chartData,
    xValueMapper: (ChartData data, _) => data.x,
    yValueMapper: (ChartData data, _) => data.y,
  ),
)

关键属性

资料以表格列出以下属性:

  • series(PyramidSeries):金字塔数据系列,每个图表一个。
  • title(ChartTitle):图表标题组件。
  • legend(Legend):图例配置。
  • tooltipBehavior(TooltipBehavior):工具提示的启用与定制。
  • enableMultiSelection(bool):是否允许多选分段。
  • palette(List<Color>):自定义分段颜色。
  • pyramidMode(PyramidMode):linear 或 surface 尺寸模式。
  • gapRatio(double):分段之间的间隙(0–1)。
  • explode(bool):是否启用点击时分段炸裂。

适用场景

资料明确指出适用于销售漏斗、人口分布、组织层级、流程阶段分析,以及需要在 Flutter 中呈现比例型或层级型数据的场景;同时支持导出 PNG/PDF、RTL 与无障碍相关处理。

限制

资料未提供该组件的授权方式、收费或价格、平台支持范围、性能上限等具体限制说明,相关事实暂未提供。