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

Метод removeViewInsets

Метод removeViewInsets виджета MediaQuery он оборачивает child и обнуляет viewInsets по флагам removeLeft, removeTop, removeRight и removeBottom. Поддерево перестаёт сдвигаться, когда открыта клавиатура. Читать реальную врезку по-прежнему можно через viewInsetsOf выше по дереву.

Синтаксис

MediaQuery.removeViewInsets( context: context, removeBottom: true, child: child, )

Параметры

Параметр Описание
context BuildContext для чтения текущего MediaQueryData.
removeLeft Обнулить левый viewInset. По умолчанию false.
removeTop Обнулить верхний viewInset. По умолчанию false.
removeRight Обнулить правый viewInset. По умолчанию false.
removeBottom Обнулить нижний viewInset. По умолчанию false.
child Дочерний виджет с изменёнными viewInsets.

Пример

Давайте зафиксируем нижнюю панель, когда открыта клавиатура:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Builder( builder: (context) { return MediaQuery.removeViewInsets( context: context, removeBottom: true, child: Column( children: [ const Expanded( child: Center( child: TextField( decoration: InputDecoration( hintText: 'abcde', ), ), ), ), Container( height: 56, color: Colors.grey.shade300, alignment: Alignment.center, child: const Text('12345'), ), ], ), ); }, ), ), ), ); }

На экране серая панель с текстом '12345' останется у нижнего края, даже если клавиатура открыта.

Пример

Давайте проверим, что внутри removeViewInsets нижний inset равен нулю:

import 'package:flutter/material.dart'; class InsetProbe extends StatelessWidget { const InsetProbe({super.key}); @override Widget build(BuildContext context) { var res = MediaQuery.viewInsetsOf(context).bottom; return Text('$res'); } } void main() { runApp( MaterialApp( home: Scaffold( body: Builder( builder: (context) { return MediaQuery.removeViewInsets( context: context, removeBottom: true, child: const Center( child: InsetProbe(), ), ); }, ), ), ), ); }

На экране по центру будет 0, даже если клавиатура перекрывает экран снаружи обёртки.

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

  • метод viewInsetsOf,
    который читает viewInsets без обнуления
  • метод removeViewPadding,
    который обнуляет viewPadding
  • метод removePadding,
    который обнуляет padding
  • класс MediaQueryData,
    где хранится поле viewInsets
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить