Метод remove
Метод remove класса OverlayEntry
убирает эту запись из слоя.
После удаления запись можно вставить снова.
Синтаксис
entry.remove();
Пример
Давайте снимем запись remove:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: RemoveDemo()));
}
class RemoveDemo extends StatelessWidget
{
const RemoveDemo({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
late OverlayEntry entry;
entry = OverlayEntry(
builder: (ctx) {
return Center(
child: TextButton(
onPressed: () {
entry.remove();
},
child: Text('12345'),
),
);
},
);
Overlay.of(context).insert(entry);
},
child: const Text('abcde'),
),
),
);
}
}
Кнопка 'abcde' откроет слой; remove на '12345' уберёт запись.
Пример
Давайте вызовем remove сразу после insert:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: QuickRemoveDemo()));
}
class QuickRemoveDemo extends StatelessWidget
{
const QuickRemoveDemo({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
final entry = OverlayEntry(
builder: (ctx) => Text('12345'),
);
Overlay.of(context).insert(entry);
entry.remove();
},
child: const Text('12345'),
),
),
);
}
}
Нажатие '12345' вставит и сразу снимет OverlayEntry, экран останется без слоя.
Смотрите также
-
виджет
Overlay,
слой поверх маршрутов -
класс
OverlayState,
управление спискомOverlayEntry -
класс
OverlayEntry,
один виджет в слое -
виджет
OverlayPortal,
слой из обычного виджета