[Flutter] build時に確定するcontroller系の値を取得する方法

例えば、PhotoViewの初期表示時のサイズ(scale)を取得したい場合とか。

PhotoView(
  controller: photoController,
  imageProvider: image,
),

build時のcontrollerにphotoControllerを渡す処理が走らないと photoController.scaleを取得することができない。

解決法としては、 WidgetsBinding.instance.addPostFrameCallback を使う方法がある。

double initialPhotoScale;
WidgetsBinding.instance.addPostFrameCallback((_) {
  initialPhotoScale = photoController.scale;
});

WidgetsBinding.instance.addPostFrameCallback はbuild直後にコールバックが走るため、build後のphotoControllerを取得することができる。