いづれも、Flutterで画面レンダリング後に実行される。主にその違いとしては、呼び出されるタイミング。
Flutterにおけるレンダリングpipelineは次の通り
Layout phase
Widgetの寸法と位置を計算
Painting phase
計算したWidgetを配置。描画の際、WidgetTreeを辿り、描画されるWidgetのpaintを実行
Compositing phase
描画したWidgetを単一の画像に合成
Rasterizing phase
最終的にpixelへと変換
「addPostFramCallback」: 「Rendering Phase」の終了直後、エンジンが「Layout phase」を開始する前に実行されるコールバックを追加します。このメソッドは、ウィジェットがペイントされた後、レイアウトが計算される前に実行する必要があるタスクに役立ちます。
「endOfFrame.then」: 「Rendering Phase」が終了し、最初のフレームの「Layout phase」が開始された後に完了するフューチャーを返します。このメソッドは、ウィジェットがペイントされ、レイアウトが計算された後に実行する必要があるタスクに役立ちます。
参考)