Класс OverlayState
Класс OverlayState - состояние виджета
Overlay.
Через
insert
и
insertAll
добавляют
OverlayEntry.
State получают методом
of.
Синтаксис
final OverlayState state = Overlay.of(context);
state.insert(entry);
Методы
| Метод | Описание |
|---|---|
insert |
Добавляет одну OverlayEntry в слой. Давайте покажем плашку через него.
|
insertAll |
Добавляет список OverlayEntry одним вызовом.
|
Пример
Давайте сохраним OverlayState и вставим запись:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: StateDemo()));
}
class StateDemo extends StatelessWidget
{
const StateDemo({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
final OverlayState overlay =
Overlay.of(context);
overlay.insert(
OverlayEntry(
builder: (ctx) {
return Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: const EdgeInsets.all(24),
child: Text('12345'),
),
);
},
),
);
},
child: const Text('abcde'),
),
),
);
}
}
На экране кнопка 'abcde'; OverlayState вставит снизу текст '12345'.
Пример
Давайте вставим две записи через insertAll:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: StateAllDemo()));
}
class StateAllDemo extends StatelessWidget
{
const StateAllDemo({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
final state = Overlay.of(context);
state.insertAll([
OverlayEntry(
builder: (ctx) {
return const Positioned(
top: 40,
left: 40,
child: Text('abcde'),
);
},
),
OverlayEntry(
builder: (ctx) {
return const Positioned(
bottom: 40,
right: 40,
child: Text('12345'),
);
},
),
]);
},
child: const Text('12345'),
),
),
);
}
}
По нажатию кнопки '12345' OverlayState покажет 'abcde' сверху слева и '12345' снизу справа.
Смотрите также
-
виджет
Overlay,
слой поверх маршрутов -
класс
OverlayEntry,
один виджет в слое -
виджет
OverlayPortal,
слой из обычного виджета -
класс
OverlayPortalController,
открыть и закрыть портал