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

show

Метод show класса OverlayPortalController показывает оверлей, который связан с этим контроллером. Повторный вызов, пока слой уже виден, ничего не меняет.

Синтаксис

controller.show();

Пример

Давайте вызовем show у контроллера:

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.show(); }, child: Text('abcde'), ), ), ), ); } }

Кнопка 'abcde' вызовет show; 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.show(); _controller.show(); }, child: Text('12345'), ), ), ), ); } }

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

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

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