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

toggle

Метод toggle класса OverlayPortalController переключает видимость связанного оверлея. Скрытый слой становится виден, видимый скрывается.

Синтаксис

controller.toggle();

Пример

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

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: PortalMethodDemo())); } class PortalMethodDemo extends StatefulWidget { const PortalMethodDemo({super.key}); @override State<PortalMethodDemo> createState() => _PortalMethodDemoState(); } class _PortalMethodDemoState extends State<PortalMethodDemo> { 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; OverlayPortal покажет или спрячет '12345'.

Пример

Давайте вызовем метод два раза подряд:

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

Кнопка '12345' дважды вызовет toggle; слой вернётся к состоянию до первого нажатия.

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

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