Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
360 of 1024 menu
◀ ▶

Класс 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,
    которое описывает портрет и альбом
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить