Класс MediaQueryData
Класс MediaQueryData не рисует интерфейс сам.
Его кладут в виджет
MediaQuery
или читают через
MediaQuery.of.
Геттер size даёт ширину и высоту области рисования.
Геттер padding - безопасные отступы от выреза и панелей.
Геттер viewInsets показывает, сколько места заняла клавиатура.
Геттер orientation возвращает
Orientation.
Геттер devicePixelRatio связывает логические и физические пиксели.
Копию с правками собирают методом
copyWith.
Синтаксис
MediaQuery.of(context)
Параметры
| Параметр | Описание |
|---|---|
size |
Ширина и высота области рисования. Принимает Size.
|
padding |
Безопасные отступы от выреза и системных панелей. Принимает EdgeInsets.
|
viewInsets |
Сколько места закрыто клавиатурой. Принимает EdgeInsets.
|
orientation |
Книжная или альбомная ориентация. Принимает Orientation.
|
devicePixelRatio |
Сколько физических пикселей приходится на один логический. |
Методы
| Метод | Описание |
|---|---|
copyWith |
Собирает новый MediaQueryData с заменой выбранных полей.
|
Пример
Давайте выведем размер экрана и ориентацию:
import 'package:flutter/material.dart';
class ScreenInfo extends StatelessWidget
{
const ScreenInfo({super.key});
@override
Widget build(BuildContext context)
{
var data = MediaQuery.of(context);
var label =
'${data.size.width}x${data.size.height} ${data.orientation}';
return Text(label);
}
}
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: ScreenInfo(),
),
),
),
);
}
На экране появится строка с шириной, высотой и текущей ориентацией.
Пример
Давайте обернём контент в отступы по padding:
import 'package:flutter/material.dart';
class PaddedBody extends StatelessWidget
{
const PaddedBody({super.key});
@override
Widget build(BuildContext context)
{
var pad = MediaQuery.of(context).padding;
return Padding(
padding: pad,
child: const Text('12345'),
);
}
}
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: PaddedBody(),
),
),
);
}
На экране текст '12345' сместится ниже статус-бара и в сторону от выреза.
Смотрите также
-
виджет
MediaQuery,
который передаёт данные экрана дочерним виджетам -
метод
copyWith,
который собирает копию с новыми полями -
виджет
SafeArea,
который добавляет отступы по данным экрана -
перечисление
Orientation,
которое описывает портрет и альбом