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

Класс OverlayEntry

Класс OverlayEntry хранит builder, который рисует виджет в слое Overlay. Запись вставляют через insert, убирают remove, перерисовку запускают markNeedsBuild.

Синтаксис

OverlayEntry( builder: (BuildContext context) { return Text('abcde'); }, )

Параметры

Параметр Описание
builder Функция, которая строит виджет этого слоя.

Методы

Метод Описание
markNeedsBuild Просит Overlay пересобрать builder записи.
remove Снимает OverlayEntry со слоя.

Пример

Давайте создадим OverlayEntry с текстом:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: EntryDemo())); } class EntryDemo extends StatelessWidget { const EntryDemo({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { final entry = OverlayEntry( builder: (ctx) { return Center( child: Text('12345'), ); }, ); Overlay.of(context).insert(entry); }, child: const Text('abcde'), ), ), ); } }

Кнопка 'abcde' вставит OverlayEntry с текстом '12345'.

Пример

Давайте снимем запись через remove:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: EntryRemoveDemo())); } class EntryRemoveDemo extends StatelessWidget { const EntryRemoveDemo({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { late OverlayEntry entry; entry = OverlayEntry( builder: (ctx) { return Center( child: ElevatedButton( onPressed: entry.remove, child: Text('12345'), ), ); }, ); Overlay.of(context).insert(entry); }, child: const Text('abcde'), ), ), ); } }

Сначала кнопка 'abcde' откроет слой с кнопкой '12345'; remove снимет OverlayEntry.

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

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