ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

fl_chart CHANGELOG 深度解读:从 0.0.1 到 1.2.0 的版本演进、核心特性与升级迁移指南

fl_chart CHANGELOG 深度解读:从 0.0.1 到 1.2.0 的版本演进、核心特性与升级迁移指南 【免费下载链接】fl_chartFL Chart is a highly customizable Flutter chart library that supports Line Chart, Bar Chart, Pie Chart, Scatter Chart, Radar Chart and Candlestick Chart.项目地址https://gitcode.com/gh_mirrors/fl/fl_chart点击查看免费下载本篇技术指南以 fl_chart 仓库的 CHANGELOG.md 为骨架系统梳理这款 Flutter 图表库从 2019 年 0.0.1 至今 1.2.0 的完整演进脉络六种图表类型如何逐步加入、渲染与触摸架构如何重构、标题与渐变系统如何统一以及历次破坏性变更BREAKING对应的迁移路径。读完你将掌握 fl_chart 的能力边界、关键配置项的含义以及在升级版本时如何借助仓库内迁移指南平滑过渡。版本总览与当前状态当前仓库的pubspec.yaml中记录的版本号为1.2.0环境约束为sdk: 3.6.2 4.0.0与flutter: 3.27.4核心依赖仅有equatable数据相等性判断与vector_math2.2.0矩阵与向量运算。CHANGELOG 覆盖从0.0.1 - Released on (2019 June 4)到1.2.0的全部发布记录是理解库能力演进的权威依据。从 CHANGELOG 的条目结构看每个版本条目包含FEATURE新特性、BUGFIX缺陷修复、IMPROVEMENT改进、BREAKING破坏性变更与IMPORTANT重要声明五类标记并标注了贡献者与关联 Issue 编号。1.2.0 条目还提到项目已引入 PR 标题规范与 linterchecker从下一个版本开始将采用自动化的 changelog 生成机制。图表家族演进从三件套到六种图表fl_chart 的图表类型是逐步扩展的CHANGELOG 记录了每一次新增版本新增图表类型说明0.0.xLineChart / BarChart / PieChart库的初始形态0.0.3 将主组件统一命名为FlChart并规定从package:fl_chart/fl_chart.dart导入0.5.0ScatterChart散点图同时引入FlPanEnd速度属性用于区分 Tap 事件0.20.1RadarChart雷达图由贡献者 Payam Zahedi 实现1.0.0CandlestickChartK 线图配套实现了展示 2024 年比特币价格的示例从当前仓库的 lib/fl_chart.dart 看公开导出已覆盖LineChart、BarChart、PieChart、ScatterChart、RadarChart、CandlestickChart以及GaugeChart七类不过 CHANGELOG 中并未记录 GaugeChart 的引入版本因此其加入时间以源码为准lib/src/chart/gauge_chart/。1.0.0 是项目的一个重要里程碑除了新增 CandlestickChart还同步完成了多项收尾工作——移除已废弃的tooltipRoundedRadius属性改用tooltipBorderRadius、修复 BarChart 数据切换时的不匹配问题、为 RadarDataSet 增加fillGradient并将最低 Flutter 版本提升至3.27.4。渲染架构演进从直接绘制到 RenderObject早期版本0.0.x0.12.x的绘制方式较为原始CHANGELOG 中记录了两次关键架构升级0.12.2引入CanvasWrapper代理全部绘制函数。按 CHANGELOG 的说明它不改变绘制结果主要目的是让代码可测试——这一点从仓库中 test/utils/canvas_wrapper_test.dart 与其配套的canvas_wrapper_test.mocks.dart可以得到印证。0.30.0全面改用 Flutter 的RenderObject作为默认绘制系统。CHANGELOG 明确指出它带来了尺寸处理、hitTest 触摸处理层面的稳定性并使图表内可以绘制 Widget修复了多个历史问题#383、#556、#582 等。这一架构沿用至今lib/src/chart/base/base_chart/render_base_chart.dart 与各图表的*_renderer.dart文件即为其实现形态。此外0.9.0 引入equatable库使所有数据模型具备值相等性判断能力这为后续动画插值与数据热更新提供了性能基础。动画系统演进从内置动画到统一 curve/duration动画能力自 0.3.0 起加入handle_animations.md是专门的说明文档。演进的关键节点如下0.3.0加入内置动画数据变化时图表平滑过渡。0.30.0为所有图表 Widget 增加swapAnimationCurve可自定义动画曲线Curve。0.69.1将swapAnimationDuration与swapAnimationCurve标记为废弃改用统一的curve和duration属性以保持全项目命名一致性。从源码看动画的实现依托数据类上的lerp方法例如 pie_chart_data.dart 中PieChartData.lerp会对 sections、centerSpaceRadius、startDegreeOffset 等逐项做插值其中sectionsSpace等使用 lerp.dart 提供的lerpDouble辅助函数。版本历史中多次出现与插值相关的缺陷修复如 0.36.0 修复FlSpot.nullSpot的 lerp 问题说明动画系统是持续打磨的重点。触摸交互演进从 touchCallback 到 FlTouchEvent触摸系统是 fl_chart 迭代最频繁的子系统之一其演进主线如下0.1.0加入触摸交互handle_touches.md是配套文档。0.4.0移除旧的touchedResultSink改为每个 TouchData 上的touchCallback函数TouchTooltipData更名为LineTouchTooltipData/BarTouchTooltipData。0.40.0触摸回调签名改为(FlTouchEvent event, BaseTouchResponse? response)。FlTouchEvent定义于 fl_touch_event.dart统一表示各类指针事件如FlTapUpEvent、FlPanUpdateEvent、FlLongPressStart等取代了旧的touchInput与clickHappened属性同时重新支持长按事件并新增mouseCursorResolver回调用于根据触摸事件动态改变MouseCursor。0.60.0增加longPressDuration可选属性控制长按手势的触发时长。0.69.0反转 ScatterChart 的触摸命中顺序让顶部的点优先被触摸到。其他值得关注的触摸相关改进包括0.45.0 为LineTouchData增加distanceCalculator用于计算触摸点与数据点间的距离0.41.0 修复getNearestTouchedSpot此前只返回阈值内第一个命中点而非最近点的缺陷。tooltip 的样式定制能力也在逐步增强0.30.0 增加directionauto/top/bottom0.35.0 支持TextSpan子文本与getTouchLineStart/getTouchLineEnd自定义触摸线0.55.0 增加tooltipBorder0.61.0 增加tooltipHorizontalAlignment与tooltipHorizontalOffset。标题系统演进从字符串到任意 Widget标题系统是 fl_chart 定制能力最强的部分0.50.0 是一次影响深远的重构0.50.0BREAKINGFlTitlesData、AxisTitles、SideTitles的结构整体调整getTitlesWidget从返回String改为返回任意 FlutterWidget——这意味着标题可以是 Icon、图片或任意组合控件。同一版本将colors属性统一为color单一实色并引入gradient字段替代旧的colorStops/gradientFrom/gradientTo组合涉及BarChartRodData、BarAreaData、LineChartBarData等多个类。0.51.0新增SideTitleWidget作为getTitlesWidget的便捷包装它让child始终贴近图表边缘并提供angle旋转角与space间距属性。CHANGELOG 给出了标准用法getTitlesWidget: (double value, TitleMeta meta) { return SideTitleWidget( axisSide: meta.axisSide, space: 8.0, angle: 0.0, child: const Text(This is your widget), ); },0.61.0AxisTitles.drawBehindEverything默认值改为true同时移除 BarChartRodData 中只能提供 color 或 gradient 之一的断言限制。1.2.0为LabelDirection枚举新增horizontalMirrored与verticalMirrored用于水平/垂直辅助线的标签HorizontalLineLabel、VerticalLineLabel。从源码看该枚举定义于 line_chart_data.dart而镜像方向的绘制分支实现在 axis_chart_data.dart 与 axis_chart_painter.dart。渐变与视觉特性全库统一的 Gradient 能力0.50.0 之后Gradient 能力在各类图表中逐步铺开0.50.0任何支持渐变的地方均可使用任意Gradient如LinearGradient、RadialGradient同时修复 BarChart 柱状图渐变的缺陷。0.65.0为FlLine增加渐变支持。0.66.0为HorizontalLine、VerticalLine以及PieChartSectionData增加gradient属性。0.62.0为RangeAnnotations的horizontalRangeAnnotations与verticalRangeAnnotations增加渐变颜色。1.1.0BarChartRodStackItem增加gradient属性与实色渲染二选一LineChartBarData增加gradientArea用于控制渐变的作用范围。从 line_chart_data.dart 看LineChartGradientArea枚举提供两种模式rectAroundTheLine渐变恰好环绕曲线与wholeChart整个图表区域作为渐变范围默认值为rectAroundTheLine。1.2.0 还为PieChartSectionData增加了cornerRadius属性用于给饼图扇区添加圆角对应仓库 pie_chart_data.dart 中的PieChartSectionData定义。图表交互增强缩放、平移与旋转0.70.0 实现了用户等待五年之久的滚动与缩放特性Issue #71由贡献者 Peetee06 完成0.70.0轴类图表LineChart、BarChart、ScatterChart支持缩放scale与平移pan通过FlTransformationConfig类控制。从 transformation_config.dart 看其默认配置为scaleAxis FlScaleAxis.none默认不缩放、minScale 1、maxScale 2.5、panEnabled true、scaleEnabled true、trackpadScrollCausesScale false并支持传入TransformationController以程序化控制变换minScale/maxScale均带有断言约束minScale 1、maxScale minScale。这一版本对应的迁移指南见 0.70.0 迁移指南其中说明BarChart因新增依据BarChartData.alignment校验变换是否允许的断言而不再支持 const 构造。0.70.1TransformationController增加panEnabled与scaleEnabled属性轴类图表新增rotationQuarterTurns属性每设置一次将图表顺时针旋转 90 度——例如设为 1 即可得到横向柱状图其行为与 Flutter 的RotatedBox一致同时 ScatterSpot 增加renderPriority、RadarChart 增加isMinValueAtCenter。0.70.2轴类图表加入误差范围error range特性FlSpot可设置xError/yErrorBarChartRodData可设置toYErrorRangeLineChartData、BarChartData、ScatterChartData通过errorIndicatorData渲染误差条。CHANGELOG 指向的示例为 line_chart_sample13.dart 与 bar_chart_sample8.dart。破坏性变更与迁移指南汇总CHANGELOG 中标注的破坏性变更贯穿始终以下是影响面较大、且仓库内配有迁移指南的几项0.50.0标题 Widget 化与渐变属性统一FlTitlesData、AxisTitles、SideTitles结构整体变更getTitlesWidget改返回 Widgetcolors改名为color新增gradient字段。完整迁移步骤见 0.50.0 迁移指南。0.66.0ScatterSpot 使用 dotPainterScatterSpot移除color与radius属性改用dotPainter自定义点绘制器同时FlDotCirclePainter.strokeWidth默认值改为 0.0。CHANGELOG 给出的迁移示例/// This is the old way: ScatterSpot( 2, 5, color: Colors.red, radius: 12, ) /// This is the new way: ScatterSpot( 2, 8, dotPainter: FlDotCirclePainter( color: Colors.red, radius: 22, ), ),0.67.0tooltipBgColor 改为 getTooltipColorBar、Line、Scatter 图表移除tooltipBgColor属性改用getTooltipColor回调以支持动态背景色。迁移指南见 0.67.0 迁移指南CHANGELOG 中的示例/// This is the old way: BarChartData( barTouchData: BarTouchData( touchTooltipData: BarTouchTooltipData( tooltipBgColor: Colors.blueGrey, ) ) ) /// This is the new way: BarChartData( barTouchData: BarTouchData( touchTooltipData: BarTouchTooltipData( getTooltipColor: (BarChartGroupData group) Colors.blueGrey, ) ) )1.0.0移除废弃属性与 Flutter 版本下限移除已废弃的tooltipRoundedRadius改用tooltipBorderRadius该替代属性自 0.71.0 引入。Flutter 最低版本提升至3.27.4升级前需确认项目 Flutter 版本。1.1.0BarChartRodStackItem 的 borderSide 改为命名参数borderSide从可选位置参数改为命名参数。虽然按语义化版本semver这属于微小的破坏性变更项目选择在 minor release 中直接处理。迁移示例/// Old way: BarChartRodStackItem( 0, 10, Colors.green, BorderSide(color: Colors.white), ), /// New way: BarChartRodStackItem( 0, 10, Colors.green, borderSide: BorderSide(color: Colors.white), ),该构造函数当前形态可在 bar_chart_data.dart 中查看BarChartRodStackItem同时支持gradient、label、labelStyle1.1.0 新增与borderSide。仓库内全部迁移指南集中在 repo_files/documentations/migration_guides/目录索引见 INDEX.md。其他未配独立指南的破坏性变更如 0.40.0 的触摸回调签名、0.30.0 的 tooltip 属性更名、0.12.0 的color→colors等均可在 CHANGELOG 对应版本条目中找到迁移代码片段。工程质量与开发流程CHANGELOG 也记录了项目工程化建设的历程0.8.1加入首批基础单元测试。0.41.0补充单元测试并在 CI 中启用代码覆盖率报告。0.12.2CanvasWrapper代理绘制函数以提升可测试性——当前仓库测试目录 test/ 已覆盖全部七种图表的数据、helper、painter、renderer 与 widget 层并配合 mockito 生成 mock 文件如*_test.mocks.dart。0.60.0将 lint 规则从 flutter_lints 替换为 very_good_analysis当前 pubspec 中为very_good_analysis: ^10.2.0。0.69.2 / 0.69.3 前后持续修复 analyzer 警告以维持 pub.dev 评分。1.2.0引入 PR 标题规范与 linter为自动化 changelog 生成做准备。仓库根目录提供 Makefile0.35.0 引入与 CONTRIBUTING.md 供贡献者在提交前快速校验代码。此外CHANGELOG 中多次出现double.nan/double.infinity相关的修复如 0.8.1 的centerSpaceRadius、0.10.1 的enterSpaceRadius、0.11.0 将 PieChartData 默认centerSpaceRadius设为double.infinity、0.40.0 修复 infinity 崩溃这些细节提醒使用者饼图中心半径的自适应语义建立在double.infinity之上改动默认值时需谨慎。升级路径建议综合 CHANGELOG 的演进脉络升级 fl_chart 时可遵循以下策略逐大版本迁移从 0.50.0 开始标题、渐变、触摸三大系统的 API 形态已趋于稳定后续改动多为增量若项目停留在 0.4x 及更早版本建议先对照 0.50.0 迁移指南 完成标题与渐变迁移再逐级升级。优先处理已废弃属性tooltipRoundedRadius→tooltipBorderRadius、swapAnimationDuration/swapAnimationCurve→curve/duration、tooltipBgColor→getTooltipColor、ScatterSpot 的color/radius→dotPainter均属此类编译器警告会给出明确指引。确认 Flutter 版本下限1.0.0 起要求 Flutter3.27.4与当前pubspec.yaml的环境约束一致。善用示例代码每次大版本更新example/lib/presentation/samples/ 中的示例如误差条的 line sample 13、bar sample 8都会同步更新是理解新 API 用法的最直接参考。赞分享【免费下载链接】fl_chartFL Chart is a highly customizable Flutter chart library that supports Line Chart, Bar Chart, Pie Chart, Scatter Chart, Radar Chart and Candlestick Chart.项目地址https://gitcode.com/gh_mirrors/fl/fl_chart点击查看免费下载相关推荐从 CHANGELOG 读懂 just-the-docsJekyll 文档主题的版本演进、核心特性与升级迁移指南从 CHANGELOG 读懂 just the docsJekyll 文档主题的版本演进、核心特性与升级迁移指南 Just the Docs 是一款现代、高可文档静态站点UI组件librosa Changelog 深度解读从 v0.1 到 v1.0.0 稳定版的版本演进与迁移升级指南librosa Changelog 深度解读从 v0.1 到 v1.0.0 稳定版的版本演进与迁移升级指南 本文基于 docs/changelog.rst h音频处理科研superagent 版本演进史从 0.0.1 到 4.x 的 API 演化与升级迁移指南superagent 版本演进史从 0.0.1 到 4.x 的 API 演化与升级迁移指南 导读 本文以仓库根目录下 HISTORY.md https://l开发工具上一篇Hyprland桌面美化完全手册gh_mirrors/dots86/dots三大主题配置详解下一篇手把手自建私人云游戏房Sunshine 串流服务器五步搭好创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表