PopoverController class
A controller for managing multiple popovers and their lifecycle.
PopoverController provides centralized management for popover instances, including creation, lifecycle tracking, and coordination between multiple popovers. It handles the complexity of overlay management and provides a clean API for popover operations.
Key responsibilities:
- Creating and showing new popovers
- Tracking active popover instances
- Coordinating close operations across popovers
- Managing popover lifecycle states
- Providing status queries for open/mounted popovers
The controller maintains a list of active popovers and provides methods to query their status, close them individually or collectively, and coordinate their display behavior.
Example:
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
final PopoverController _popoverController = PopoverController();
@override
void dispose() {
_popoverController.dispose();
super.dispose();
}
void _showMenu() async {
await _popoverController.show(
context: context,
alignment: Alignment.bottomStart,
builder: (context) => MyPopoverContent(),
);
}
}
- Inheritance
-
- Object
- ChangeNotifier
- PopoverController
Constructors
Properties
- alignment ← AlignmentGeometry
-
no getter
- allowInvertHorizontal ← bool
-
no getter
- allowInvertVertical ← bool
-
no getter
- anchorAlignment ← AlignmentGeometry
-
no getter
- anchorContext ← BuildContext
-
no getter
- follow ← bool
-
no getter
- hashCode → int
-
The hash code for this object.
no setterinherited
- hasListeners → bool
-
Whether any listeners are currently registered.
no setterinherited
- hasMountedPopover → bool
-
no setter
- hasOpenPopover → bool
-
no setter
- heightConstraint ← PopoverConstraint
-
no getter
- margin ← EdgeInsets
-
no getter
- offset ← Offset?
-
no getter
-
openPopovers
→ Iterable<
Popover> -
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- widthConstraint ← PopoverConstraint
-
no getter
Methods
-
addListener(
VoidCallback listener) → void -
Register a closure to be called when the object changes.
inherited
-
close(
[bool immediate = false]) → void -
closeLater(
) → void -
dispose(
) → void -
Discards any resources used by the object. After this is called, the
object is not in a usable state and should be discarded (calls to
addListener will throw after the object is disposed).
override
-
disposePopovers(
) → void -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
notifyListeners(
) → void -
Call all the registered listeners.
inherited
-
removeListener(
VoidCallback listener) → void -
Remove a previously registered closure from the list of closures that are
notified when the object changes.
inherited
-
show<
T> ({required BuildContext context, required WidgetBuilder builder, required AlignmentGeometry alignment, AlignmentGeometry? anchorAlignment, PopoverConstraint widthConstraint = PopoverConstraint.flexible, PopoverConstraint heightConstraint = PopoverConstraint.flexible, bool modal = true, bool closeOthers = true, Offset? offset, GlobalKey< OverlayHandlerStateMixin< ? key, Object? regionGroupId, AlignmentGeometry? transitionAlignment, bool consumeOutsideTaps = true, EdgeInsetsGeometry? margin, ValueChanged<StatefulWidget> >PopoverOverlayWidgetState> ? onTickFollow, bool follow = true, bool allowInvertHorizontal = true, bool allowInvertVertical = true, bool dismissBackdropFocus = true, Duration? showDuration, Duration? hideDuration, OverlayBarrier? overlayBarrier, OverlayHandler? handler}) → Future<T?> -
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited