Flutter-动画小部件,仅触发一次动画,但在小部件上获取数据更新

时间:2019-10-28 20:02:50

标签: flutter dart flutter-animation

我的应用程序中已经两次遇到以下问题:
StatefulWidget中,我有一个小部件,其中包含动画并另外显示其他动态数据。动画小部件构建完成后触发动画。但是,在播放动画(人物的绘图)之后,我希望将其保持在相同的绘图状态。调用父项StatefulWidget的{​​{1}}方法时,应始终重建窗口小部件的其余动态数据。
下面是我尝试实现的简单示例:

build

现在,我对实现状态有两个想法:
1)在class MyStatefulWidget extends StatefulWidget { MyStatefulWidget({Key key, @required this.data}) : super(key: key); CustomData data; @override State<StatefulWidget> createState() => _MyState(); } 中初始化动画小部件,然后“手动”处理initState()中的数据更新。

didUpdateWidget()

2)在class _MyState extends State<MyStatefulWidget> { AnimationWidget _animationWidget; @override void initState() { super.initState(); _animationWidget = AnimationWidget(displayData: widget.data); // starts the animation when the widget is built (?) WidgetsBinding.instance .addPostFrameCallback((_) => _animationWidget.startAnimation()); } @override Widget build(BuildContext context) { return Column( children: [ _animationWidget, ... // other content ], ... // column size etc. ); } @override void didUpdateWidget(SackenNotebookContent oldWidget) { super.didUpdateWidget(oldWidget); if(dataChanged(oldWidget.data, widget.data)) setState(() { _animationWidget = AnimationWidget(displayData: widget.data); }); } } 方法中创建动画小部件。但是那时我已经对何时何地触发动画开始感到怀疑。一种方法是在build()中触发它。但同样,动画将在每次重新构建小部件时触发...

didUpdateWidget()

有没有人知道我该如何应对此类问题?

0 个答案:

没有答案