デバイスサイズを取得する方法
備忘録
他にいい方法があったらコメント欄で教えてください
context使用
Size size = MediaQuery.of(context).size;
double width = size.width;
double height = size.height;
contextを使わない方法
contextを使わないでデバイスサイズを取得する場合WidgetsBinding.instance.platformDispatcher.views.first.physicalSize
を用いるのですが、取得できるのは物理ピクセルでのサイズになります。
contextを用いる方法のMediaQuery.of(context).size
で取得できるサイズは論理ピクセルです。
そのため、contextを用いずに論理ピクセルを取得したい場合はWidgetsBinding.instance.platformDispatcher.views.first.devicePixelRatio
で割ってあげる必要があります
double pixelRatio = WidgetsBinding.instance.platformDispatcher.views.first.devicePixelRatio;
// 物理ピクセル
Size physicalSize = WidgetsBinding.instance.platformDispatcher.views.first.physicalSize;
double physicalSizeWidth = size.width;
double physicalSizeHeight = size.height;
// 論理ピクセル
Size logicalSize = WidgetsBinding.instance.platformDispatcher.views.first.physicalSize / pixelRatio;
double logicalSizeWidth = size.width;
double logicalSizeHeight = size.height;