addPostFrameCallbackとendOfFrame.thenについて

shinnaga
·

いづれも、Flutterで画面レンダリング後に実行される。主にその違いとしては、呼び出されるタイミング。

Flutterにおけるレンダリングpipelineは次の通り

  1. Layout phase

    Widgetの寸法と位置を計算

  2. Painting phase

    計算したWidgetを配置。描画の際、WidgetTreeを辿り、描画されるWidgetのpaintを実行

  3. Compositing phase

    描画したWidgetを単一の画像に合成

  4. Rasterizing phase

    最終的にpixelへと変換

  • 「addPostFramCallback」: 「Rendering Phase」の終了直後、エンジンが「Layout phase」を開始する前に実行されるコールバックを追加します。このメソッドは、ウィジェットがペイントされた後、レイアウトが計算される前に実行する必要があるタスクに役立ちます。

  • 「endOfFrame.then」: 「Rendering Phase」が終了し、最初のフレームの「Layout phase」が開始された後に完了するフューチャーを返します。このメソッドは、ウィジェットがペイントされ、レイアウトが計算された後に実行する必要があるタスクに役立ちます。

参考)