Размер экрана MediaQuery в Flutter
Разметка часто зависит от размера экрана:
узкий телефон против широкого планшета.
Данные о дисплее хранит
MediaQuery.
Метод
MediaQuery.sizeOf(context) возвращает
Size с полями width и
height в логических пикселях -
удобно вызывать внутри build:
import 'package:flutter/material.dart';
void main() {
runApp(const MaterialApp(home: HomePage()));
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
final size = MediaQuery.sizeOf(context);
return Scaffold(
body: Center(
child: Text(
'${size.width.toStringAsFixed(0)} × '
'${size.height.toStringAsFixed(0)}',
),
),
);
}
}
Полученные числа описывают область, которую
видит MaterialApp
с учётом ориентации. При повороте устройства
build вызовется снова, и ширина с
высотой поменяются местами. Не путайте
размер экрана с размером одного виджета -
для локальных границ есть LayoutBuilder
в более поздних темах:
Widget build(BuildContext context) {
final width = MediaQuery.sizeOf(context).width;
final isWide = width >= 600; // simple tablet cutoff
return Scaffold(
body: Center(
child: Text(isWide ? 'Wide screen' : 'Narrow screen'),
),
);
}
Выведите по центру две строки: 'Width:'
и число ширины, затем 'Height:' и
число высоты из MediaQuery.sizeOf(context)
(целые значения). Поверните эмулятор и
убедитесь, что цифры обновились.