You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter pie_chart插件滚动时异常旋转问题求助

解决Flutter pie_chart滚动时异常旋转的问题

这个问题是因为滚动操作触发了饼图组件的重复重建,导致pie_chart的动画每次都从头执行,进而出现异常旋转的现象。可以通过以下几种方式解决:

方案1:禁用饼图动画

直接将动画时长设为0,避免滚动时重复触发动画:

PieChart(
  // 其他配置保持不变
  animationDuration: Duration(milliseconds: 0), // 修改这一行
  // ...
)

方案2:保持组件状态,避免滚动时重建

如果需要保留初始化时的动画效果,可以用AutomaticKeepAliveClientMixin让饼图在滚动时维持状态,不重复重建:

  1. 将包含饼图的组件改为StatefulWidget
  2. 混入AutomaticKeepAliveClientMixin并实现对应方法:
class _PieChartContainerState extends State<PieChartContainer> with AutomaticKeepAliveClientMixin {
  @override
  bool get wantKeepAlive => true;

  @override
  Widget build(BuildContext context) {
    super.build(context); // 必须调用此方法
    return SizedBox(
      // 你的饼图原有代码
      height: 150.0,
      child: Stack(
        children: [
          PieChart(/* ... */)
        ],
      )
    );
  }
}

方案3:固定角度配置+控制动画触发时机

明确固定饼图的角度参数,同时让动画只在数据变化时触发,而非滚动重建时:

  • 启用degreeOptions固定总角度与初始角度:
PieChart(
  degreeOptions: const DegreeOptions(totalDegrees: 360, initialAngle: 0),
  // 其他配置不变
)
  • 通过状态管理(比如ValueNotifier或Provider)监听dataMap、hoursSpent等核心数据的变化,仅当数据更新时才重新触发饼图动画,避免滚动重建时重复执行动画。

内容的提问来源于stack exchange,提问作者rafa_pe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 14:12:11