关于 syncfusion-flutter-gauges
面向 Flutter 开发者的 Syncfusion 线性与径向仪表参考 Skill,涵盖测量显示和仪表盘指标的构建。内容涉及配置、样式、动画、交互与无障碍功能。
主要功能
- 01线性与径向仪表指南
- 02刻度、范围和指针配置
- 03颜色与渐变样式
- 04动画和拖动交互
- 05无障碍功能说明
适用场景
- 01构建进度和状态指示器
- 02呈现仪表盘指标
- 03创建交互式测量控件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ syncfusion/ flutter-ui-components-skills --skill syncfusion-flutter-gauges安装后在 Claude Code 中输入/syncfusion-flutter-gauges确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/accessibility.mdadvanced-features.mdanimation.mdaxes.mdcustomization.mdgetting-started.mdinteraction.mdlinear-gauge-overview.mdpointers.mdradial-gauge-overview.mdranges.md详细介绍
Syncfusion Flutter Gauges
此技能涵盖两个相关的 Syncfusion Flutter 组件,用于数据可视化和测量显示:SfLinearGauge(线性仪表)和 SfRadialGauge(径向仪表)。虽然它们有许多相同的视觉和配置功能,但用途不同,视觉呈现方式也各不相同。
何时使用此技能
在以下情况下使用此技能:
- 在线性或径向刻度上显示数据,以直观呈现测量结果
- 创建进度指示器,并自定义样式和动画
- 构建仪表板可视化效果,展示 KPI、指标或性能指示器
- 实现测量显示(速度表、温度计、压力表)
- 添加交互式仪表,支持拖动指针和更改数值
- 在线性或圆形刻度上可视化范围和阈值
- 创建自定义仪表控件,用于音量、亮度或评分输入
- 在现代 Flutter 应用中显示模拟风格的指示器
- 通过仪表呈现方式构建电池、信号或状态指示器
- 自定义仪表外观,包括颜色、渐变、动画和样式
选择合适的组件
在以下情况下使用 SfLinearGauge(线性仪表):
- 需要水平或垂直测量显示
- 数据最适合用线性刻度(条形样式)表示
- 需要使用条形指针显示进度或级别
- 方向灵活性很重要(可轻松旋转 90°)
- 对称显示需要镜像效果
- 构建:进度条、滑块、电池指示器、音量控件、水平仪表板
在以下情况下使用 SfRadialGauge(径向仪表):
- 需要圆形或弧形显示
- 可视化需要使用指针(经典仪表样式)
- 需要360 度或半圆形呈现
- 需要在仪表上放置带小部件的注释
- 需要在仪表上方显示标题
- 需要导出为图像功能
- 构建:速度表、转速表、温度仪、指南针显示、钟面、圆形进度指示器
主要差异摘要:
| 功能 | SfLinearGauge | SfRadialGauge |
|---|---|---|
| 主要形状 | 线性(水平/垂直) | 圆形/弧形 |
| 方向 | 水平、垂直 | 圆形(360°) |
| 条形指针 | ✅ 是 | ❌ 否 |
| 指针 | ❌ 否 | ✅ 是 |
| 范围指针 | ❌ 否 | ✅ 是 |
| 标记指针 | ✅ 形状和小部件 | ✅ 形状和小部件 |
| 镜像效果 | ✅ 是 | ❌ 否 |
| 注释 | ❌ 否 | ✅ 是 |
| 标题支持 | ❌ 否 | ✅ 是 |
| 导出为图像 | ❌ 否 | ✅ 是 |
| 多个轴 | ❌ 有限支持 | ✅ 是 |
| 轴角度 | 不适用 | ✅ 可配置 |
文档和导航指南
入门
📄 阅读: references/getting-started.md
- 两个组件的安装和软件包设置
- SfLinearGauge 基本实现
- SfRadialGauge 基本实现
- 软件包依赖项和导入
- 快速比较和首个示例
组件概览
📄 线性仪表: references/linear-gauge-overview.md
- SfLinearGauge 小部件概览和功能
- 何时使用线性仪表而非径向仪表
- 方向选项(水平/垂直)
- 线性仪表专属功能
- 线性仪表基本配置
📄 径向仪表: references/radial-gauge-overview.md
- SfRadialGauge 小部件概览和功能
- 何时使用径向仪表而非线性仪表
- 圆形和弧形配置
- 径向仪表专属功能
- 标题和多轴支持
- 径向仪表基本配置
轴和刻度
📄 阅读: references/axes.md
- 两种仪表的轴自定义
- 线性轴(轨道、粗细、颜色)
- 径向轴(圆弧、角度、半径)
- 最小值和最大值
- 轴间隔和刻度
- 轴线样式和渐变
- 标签和刻度线的位置
- 反向轴方向
- 自定义刻度和渲染器
- 多个轴(径向)
指针
📄 阅读: references/pointers.md
- 指针类型概览
- 形状/标记指针(两种仪表)
- Widget 指针(两种仪表)
- 条形指针(仅线性仪表)
- 指针指针(仅径向仪表)
- 范围指针(仅径向仪表)
- 多个指针的配置
- 指针定位和样式
- 指针对比和选择指南
范围
📄 阅读: references/ranges.md
- 范围可视化概念
- 向线性仪表添加范围
- 向径向仪表添加范围
- 范围颜色和渐变
- 范围定位和粗细
- 多个范围的配置
- 范围用例和模式
自定义和样式
📄 阅读: references/customization.md
- 两种仪表的视觉外观
- 颜色(纯色和渐变)
- 粗细和尺寸
- 边框自定义
- 圆角和边缘样式
- 背景颜色和图像
- 主题集成
- 标签和刻度线样式
动画
📄 阅读: references/animation.md
- 两种仪表的动画支持
- 指针动画
- 轴和范围动画
- 动画时长和缓动
- enableAnimation 属性
- 动画回调
- 加载动画
交互
📄 阅读: references/interaction.md
- 两种仪表的指针拖动
- enableDragging 属性
- 值变更事件
- onValueChangeStart、onValueChanging、onValueChanged、onValueChangeEnd
- 触控和手势支持
- 交互式值更新
- 限制拖动范围
无障碍功能
📄 阅读: references/accessibility.md
- 屏幕阅读器支持
- 仪表的语义标签
- WCAG 合规性
- 键盘导航
- 线性仪表的无障碍功能
- 径向仪表的无障碍功能
- 最佳实践
高级功能
📄 阅读: references/advanced-features.md
- 镜像仪表(线性仪表)
- 使用 Widget 添加注释(径向仪表)
- 导出为图像(径向仪表)
- 背景图像(径向仪表)
- 自定义标签格式
- 自定义渲染器和构建器
- 特殊配置
- 边缘情况和故障排除
快速入门示例
如需详细的设置说明,请参阅 入门指南。
基本线性仪表
import 'package:syncfusion_flutter_gauges/gauges.dart';
SfLinearGauge(
minimum: 0,
maximum: 100,
barPointers: [LinearBarPointer(value: 60)],
markerPointers: [LinearShapePointer(value: 60)],
)
基本径向仪表
import 'package:syncfusion_flutter_gauges/gauges.dart';
SfRadialGauge(
axes: [
RadialAxis(
minimum: 0,
maximum: 150,
pointers: [NeedlePointer(value: 90)],
),
],
)
交互式仪表(可拖动)
double _value = 50.0;
// Linear with dragging
SfLinearGauge(
markerPointers: [
LinearShapePointer(
value: _value,
enableDragging: true,
onChanged: (v) => setState(() => _value = v),
),
],
)
// Radial with dragging
SfRadialGauge(
axes: [
RadialAxis(
pointers: [
NeedlePointer(
value: _value,
enableDragging: true,
onValueChanged: (v) => setState(() => _value = v),
),
],
),
],
)
常见模式
多范围状态指示器:
ranges: [
LinearGaugeRange(startValue: 0, endValue: 30, color: Colors.red),
LinearGaugeRange(startValue: 30, endValue: 70, color: Colors.yellow),
LinearGaugeRange(startValue: 70, endValue: 100, color: Colors.green),
]
渐变样式:
axisTrackStyle: LinearAxisTrackStyle(
gradient: LinearGradient(colors: [Colors.blue, Colors.purple]),
)
垂直方向:
SfLinearGauge(
orientation: LinearGaugeOrientation.vertical,
barPointers: [LinearBarPointer(value: 75)],
)
自定义角度(半圆):
RadialAxis(startAngle: 180, endAngle: 0)
镜像效果:
SfLinearGauge(isMirrored: true)
关键属性
SfLinearGauge 基本属性
minimum- 轴的最小值(默认值:0)maximum- 轴的最大值(默认值:100)interval- 轴标签之间的间隔orientation- 水平或垂直方向isMirrored- 镜像仪表元素isAxisInversed- 反转轴方向axisTrackStyle- 轴轨道样式(颜色、厚度、渐变、边框)axisTrackExtent- 延伸轴轨道的两端showAxisTrack- 显示/隐藏轴轨道showLabels- 显示/隐藏轴标签showTicks- 显示/隐藏刻度线labelPosition- 标签置于内侧或外侧tickPosition- 刻度置于内侧或外侧labelOffset- 刻度线与标签之间的距离labelFormatterCallback- 自定义标签格式化ranges- 用于彩色分段的 LinearGaugeRange 列表markerPointers- 形状或组件指针列表barPointers- 条形指针列表(进度样式)animationDuration- 动画时长(毫秒)onGenerateLabels- 自定义标签生成回调valueToFactorCallback- 自定义比例转换
SfRadialGauge 基本属性
title- 仪表标题 GaugeTitlebackgroundColor- 仪表背景颜色axes- RadialAxis 列表(支持多个)enableLoadingAnimation- 显示加载动画animationDuration- 动画时长(毫秒)
RadialAxis 基本属性
minimum- 轴的最小值(默认值:0)maximum- 轴的最大值(默认值:100)interval- 标签之间的间隔startAngle- 轴的起始角度(默认值:270)endAngle- 轴的结束角度(默认值:270)radiusFactor- 半径大小因子(0-1)centerX- 水平中心位置(0-1)centerY- 垂直中心位置(0-1)isInversed- 反转轴方向canScaleToFit- 根据角度定位轴canRotateLabels- 根据角度旋转标签showFirstLabel- 显示/隐藏第一个标签showLastLabel- 显示/隐藏最后一个标签maximumLabels- 每 100 个逻辑像素的最大标签数axisLineStyle- 轴线的 AxisLineStyleshowAxisLine- 显示/隐藏轴线showLabels- 显示/隐藏标签showTicks- 显示/隐藏刻度线axisLabelStyle- 标签的 GaugeTextStylelabelFormat- 标签格式字符串(前缀/后缀)numberFormat- 用于本地化的 NumberFormatlabelsPosition- 标签置于内侧或外侧ticksPosition- 刻度置于内侧或外侧majorTickStyle- 自定义 MajorTickStyleminorTickStyle- 自定义 MinorTickStyleminorTicksPerInterval- 每个间隔内的次刻度数tickOffset- 与轴的距离labelOffset- 与刻度线的距离offsetUnit- 逻辑像素或因子backgroundImage- 轴背景的 AssetImageranges- GaugeRange 列表pointers- GaugePointer 列表annotations- GaugeAnnotation 列表onLabelCreated- 标签创建回调onAxisTapped- 轴点击回调onCreateAxisRenderer- 自定义渲染器回调
LinearGauge 范围属性
startValue- 范围起始值endValue- 范围结束值color- 范围颜色startWidth- 起始宽度endWidth- 结束宽度position- 内侧、外侧或横跨rangeShapeType- 平直或曲线形状
RadialGauge 范围属性
startValue- 范围起始值endValue- 范围结束值color- 范围颜色startWidth- 起始宽度endWidth- 结束宽度gradient- 范围渐变rangeOffset- 与轴的偏移量sizeUnit- 逻辑像素或因子label- 范围文本标签
指针属性(通用)
value- 指针值enableDragging- 启用指针拖动enableAnimation- 启用指针动画animationDuration- 动画时长animationType- 动画曲线类型onValueChangeStart- 拖动开始回调onValueChanging- 拖动进度回调onValueChanged- 值变更回调onValueChangeEnd- 拖动结束回调
常见用例
- 进度指示器 - 使用 LinearBarPointer 或 RangePointer 跟踪进度
- 速度表仪表盘 - 使用带有 NeedlePointer 和范围的 RadialGauge
- 温度显示 - 使用垂直 LinearGauge 或半圆形 RadialGauge
- 电量指示器 - 使用带有镜像效果和范围的 LinearGauge
- 音量/亮度控制 - 使用可拖动的 LinearShapePointer
- KPI 仪表盘 - 使用多个带有注释的 RadialGauge
- 评分显示 - 使用带有半圆形和 RangePointer 的 RadialGauge
- 燃油表 - 使用带有指针和彩色范围的 RadialGauge
- 加载指示器 - 使用动画 LinearBarPointer 或 RangePointer
- 滑块替代方案 - 使用带有可拖动指针的交互式 LinearGauge
评论
支持 Markdown