【问题标题】:Flutter AnimationController repeat() repaints the parent widget even though the controller is not used即使未使用控制器,Flutter AnimationController repeat() 也会重新绘制父小部件
【发布时间】:2022-08-04 18:38:26
【问题描述】:

我激活了“Highlight repaints”,并看到在使用带有 AnimationController repeat() 的小部件时,整个屏幕都会一直被重新绘制。

有谁知道这是否是预期的行为?

这是一个代码示例。如果我在任何屏幕中使用小部件,即使我只是返回一个 Container() 并且根本不实际使用控制器,整个屏幕也会不断地重新绘制。

class ProgressBar extends StatefulWidget {
  const ProgressBar({
    Key? key,
  }) : super(key: key);

  @override
  State<ProgressBar> createState() => _ProgressBarState();
}

class _ProgressBarState extends State<ProgressBar>
    with SingleTickerProviderStateMixin {
  AnimationController? _animController;

  @override
  void initState() {
    super.initState();
    _animController =
        AnimationController(duration: const Duration(seconds: 4), vsync: this)
          ..repeat();
  }

  @override
  void dispose() {
    _animController?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
  • 你能包括你在哪里使用控制器吗?
  • @YeasinSheikh 我之前使用完整代码创建了另一个问题。 stackoverflow.com/questions/72397431/… 问题是即使我不使用创建的控制器,整个屏幕总是会被重新绘制。在上面的代码示例中,我只返回一个 emty Container,但如果在任何屏幕中使用 ProgressBar(),屏幕就会一直重新绘制。

标签: flutter flutter-layout flutter-animation


【解决方案1】:

您是否尝试过使用 RepaintBoundary 小部件?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    相关资源
    最近更新 更多