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

Класс OverlayState

Класс OverlayState - состояние виджета Overlay. Через insert и insertAll добавляют OverlayEntry. State получают методом of.

Синтаксис

final OverlayState state = Overlay.of(context); state.insert(entry);

Методы

Метод Описание
insert Добавляет одну OverlayEntry в слой. Давайте покажем плашку через него.
insertAll Добавляет список OverlayEntry одним вызовом.

Пример

Давайте сохраним OverlayState и вставим запись:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: StateDemo())); } class StateDemo extends StatelessWidget { const StateDemo({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { final OverlayState overlay = Overlay.of(context); overlay.insert( OverlayEntry( builder: (ctx) { return Align( alignment: Alignment.bottomCenter, child: Padding( padding: const EdgeInsets.all(24), child: Text('12345'), ), ); }, ), ); }, child: const Text('abcde'), ), ), ); } }

На экране кнопка 'abcde'; OverlayState вставит снизу текст '12345'.

Пример

Давайте вставим две записи через insertAll:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: StateAllDemo())); } class StateAllDemo extends StatelessWidget { const StateAllDemo({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { final state = Overlay.of(context); state.insertAll([ OverlayEntry( builder: (ctx) { return const Positioned( top: 40, left: 40, child: Text('abcde'), ); }, ), OverlayEntry( builder: (ctx) { return const Positioned( bottom: 40, right: 40, child: Text('12345'), ); }, ), ]); }, child: const Text('12345'), ), ), ); } }

По нажатию кнопки '12345' OverlayState покажет 'abcde' сверху слева и '12345' снизу справа.

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

  • виджет Overlay,
    слой поверх маршрутов
  • класс OverlayEntry,
    один виджет в слое
  • виджет OverlayPortal,
    слой из обычного виджета
  • класс OverlayPortalController,
    открыть и закрыть портал
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить