Метод viewInsetsOf
Метод viewInsetsOf виджета
MediaQuery он совпадает с
.
Нижнее значение растёт, когда открыта клавиатура.
Чтобы игнорировать врезку, используют
MediaQuery.of(context).viewInsetsremoveViewInsets.
Синтаксис
MediaQuery.viewInsetsOf(context)
Параметры
| Параметр | Описание |
|---|---|
context |
BuildContext виджета под MediaQuery.
|
Пример
Давайте поднимем кнопку над клавиатурой:
import 'package:flutter/material.dart';
class LiftedButton extends StatelessWidget
{
const LiftedButton({super.key});
@override
Widget build(BuildContext context)
{
var bottom = MediaQuery.viewInsetsOf(context).bottom;
return Padding(
padding: EdgeInsets.only(bottom: bottom),
child: ElevatedButton(
onPressed: () {},
child: const Text('abcde'),
),
);
}
}
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: LiftedButton(),
),
),
),
);
}
На экране кнопка останется над клавиатурой, когда она открыта.
Пример
Давайте выведем текущий нижний viewInset:
import 'package:flutter/material.dart';
class InsetLabel extends StatelessWidget
{
const InsetLabel({super.key});
@override
Widget build(BuildContext context)
{
var res = MediaQuery.viewInsetsOf(context).bottom;
return Text('$res');
}
}
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: InsetLabel(),
),
),
),
);
}
На экране по центру будет число: высота перекрытия снизу.
Смотрите также
-
метод
removeViewInsets,
который обнуляет viewInsets для поддерева -
метод
paddingOf,
который возвращает постоянные отступы экрана -
метод
viewPaddingOf,
который не меняется при открытии клавиатуры -
класс
MediaQueryData,
где лежит полеviewInsets