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

Класс OverlayPortalController

Класс OverlayPortalController передают в OverlayPortal. Методы show, hide и toggle меняют видимость overlayChildBuilder.

Синтаксис

final OverlayPortalController controller = OverlayPortalController(); controller.show();

Методы

Метод Описание
hide Прячет слой, связанный с контроллером.
show Показывает слой, связанный с контроллером.
toggle Показывает слой, если он скрыт, и прячет, если он виден.

Пример

Давайте переключим слой через toggle:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: CtrlDemo())); } class CtrlDemo extends StatefulWidget { const CtrlDemo({super.key}); @override State<CtrlDemo> createState() => _CtrlDemoState(); } class _CtrlDemoState extends State<CtrlDemo> { final OverlayPortalController _controller = OverlayPortalController(); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: OverlayPortal( controller: _controller, overlayChildBuilder: (ctx) { return Text('12345'); }, child: ElevatedButton( onPressed: _controller.toggle, child: Text('abcde'), ), ), ), ); } }

Кнопка 'abcde' вызывает toggle; в слое появится или исчезнет '12345'.

Пример

Давайте откроем и закроем show и hide:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: CtrlShowHideDemo())); } class CtrlShowHideDemo extends StatefulWidget { const CtrlShowHideDemo({super.key}); @override State<CtrlShowHideDemo> createState() => _CtrlShowHideDemoState(); } class _CtrlShowHideDemoState extends State<CtrlShowHideDemo> { final OverlayPortalController _controller = OverlayPortalController(); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ OverlayPortal( controller: _controller, overlayChildBuilder: (ctx) { return Text('abcde'); }, child: const SizedBox.shrink(), ), ElevatedButton( onPressed: _controller.show, child: Text('abcde'), ), ElevatedButton( onPressed: _controller.hide, child: Text('12345'), ), ], ), ), ); } }

Кнопка 'abcde' откроет слой с текстом 'abcde'; '12345' вызовет hide.

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

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