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

Метод copyWith

Метод copyWith класса MediaQueryData метод copyWith MediaQueryData. Каждый параметр необязателен: если его не передали, останется значение из исходного объекта. Результат кладут в виджет MediaQuery. Параметры textScaler и устаревший textScaleFactor нельзя задавать одновременно.

Синтаксис

mediaQueryData.copyWith( size: Size(400, 800), padding: EdgeInsets.zero, )

Параметры

Параметр Описание
size Новый размер области рисования.
devicePixelRatio Соотношение физических и логических пикселей.
textScaler Масштаб текста для поддерева.
platformBrightness Яркость платформы: Brightness.light или Brightness.dark.
padding Отступы под системные панели и вырез.
viewPadding Постоянные отступы экрана без учёта клавиатуры.
viewInsets Перекрытие клавиатурой и оверлеями.
systemGestureInsets Зоны системных жестов по краям экрана.
highContrast Включён ли режим высокой контрастности.
disableAnimations Нужно ли отключить анимации из настроек системы.

Пример

Давайте увеличим масштаб текста для части экрана:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Builder( builder: (context) { var base = MediaQuery.of(context); return MediaQuery( data: base.copyWith( textScaler: TextScaler.linear(2), ), child: const Center( child: Text('abcde'), ), ); }, ), ), ), ); }

На экране текст 'abcde' станет в два раза крупнее системного.

Пример

Давайте подменим размер для теста адаптивной вёрстки:

import 'package:flutter/material.dart'; class WidthProbe extends StatelessWidget { const WidthProbe({super.key}); @override Widget build(BuildContext context) { var res = MediaQuery.sizeOf(context).width; return Text('$res'); } } void main() { runApp( MaterialApp( home: Scaffold( body: Builder( builder: (context) { var base = MediaQuery.of(context); return MediaQuery( data: base.copyWith( size: const Size(320, 640), ), child: const Center( child: WidthProbe(), ), ); }, ), ), ), ); }

На экране по центру появится число 320, хотя физический экран может быть шире.

Смотрите также

  • класс MediaQueryData,
    который copyWith копирует
  • виджет MediaQuery,
    куда кладут результат copyWith
  • метод of,
    который даёт исходный MediaQueryData
  • метод textScalerOf,
    который читает textScaler после copyWith
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить