AnimationController .forward()
Deep Dive Animation
03
Slide 36
Slide 36 text
AnimationController .forward()
Deep Dive Animation
03
・_animateToInternal ではアニメーションを行う際の様々な値の制御を行っている
Slide 37
Slide 37 text
AnimationController .forward()
Deep Dive Animation
03
最大、最小値を元に
value の値を調整
Slide 38
Slide 38 text
AnimationController .forward()
Deep Dive Animation
03
Ticker 処理を開始する
Slide 39
Slide 39 text
SingleTickerProviderStateMixin
Deep Dive Animation
03
・対象の Widget tree が有効な場合に単一の Ticker を更新する mixin
・継承先の class で単一の AnimationController を使用する際に使用( vsync: this で使用)
Slide 40
Slide 40 text
SingleTickerProviderStateMixin
Deep Dive Animation
03
ticker を現在の Widget tree 内で
有効にするかのフラグを管理
ticker 自身を管理
Slide 41
Slide 41 text
SingleTickerProviderStateMixin
Deep Dive Animation
03
ticker 自身の
有効フラグを更新する
Listenable を更新する
Slide 42
Slide 42 text
AnimatedSlide を使用して
リッチなUIを実装
Deep Dive Animation
03
Slide 43
Slide 43 text
実装内容
・StatefulWidget を継承
・SingleChildScrollView + Column
Deep Dive Animation
03
パフォーマンスの計測と分析
検証結果
04
・計測結果
0.673 ~ 0.765 s => 0.08s (80 ms) before 170 ms
・Rebuild 回数
Slide 77
Slide 77 text
パフォーマンスの計測と分析
RepaintBoundary の付与基準
04
Q: metrics の数値が高ければどこにでも付与すれば良いのか?
RepaintBoundary has the further side-effect of possibly hinting to the
engine that it should further optimize animation performance.
Flutter Engine (GPU) に副作用をもたらす可能性
(GPU 内のメモリコストを逼迫させるため)