Depreciar OverlayPortal.targetsRootOverlay y aplicar LookupBoundary en Overlay.of
Aprende sobre los cambios en OverlayPortal y Overlay en Flutter.
Resumen
#La propiedad OverlayPortal.targetsRootOverlay fue depreciada y
reemplazada por overlayLocation.
Overlay.of y Overlay.maybeOf ahora respetan LookupBoundary.
Contexto
#Se añadió un parámetro overlayLocation al
constructor por defecto de OverlayPortal para
controlar dónde se renderiza el hijo del overlay.
Como resultado, el constructor OverlayPortal.targetsRootOverlay ya
no es útil.
Para evitar que un OverlayEntry se inserte a través de límites multi-vista
por error, Overlay.of ahora respeta LookupBoundary.
Descripción del cambio
#El constructor OverlayPortal.targetsRootOverlay está depreciado.
Overlay.of y Overlay.maybeOf no buscarán más allá de LookupBoundary.
Guía de migración
#Si estás usando OverlayPortal.targetsRootOverlay,
usa OverlayPortal con overlayLocation en su lugar.
Caso 1: caso trivial
#Código antes de la migración:
Widget build(BuildContext context) {
return OverlayPortal.targetsRootOverlay(
controller: myController,
overlayChildBuilder: _myBuilder,
child: myChild,
);
}
Código después de la migración:
Widget build(BuildContext context) {
return OverlayPortal(
overlayLocation: OverlayChildLocation.rootOverlay,
controller: myController,
overlayChildBuilder: _myBuilder,
child: myChild,
);
}
Si esperas que Overlay.of y Overlay.maybeOf busquen más allá de LookupBoundary,
usa findAncestorStateOfType en su lugar.
Código antes de la migración:
Widget build(BuildContext context) {
Overlay.of(context);
// ...
}
Código después de la migración:
Widget build(BuildContext context) {
context.findAncestorStateOfType<OverlayState>();
// ...
}
Timeline
#Llegó en la versión: 3.38.0-0.1.pre
En la versión estable: 3.38
Referencias
#Documentación de la API:
Problema relevante:
PR relevante:
A menos que se indique lo contrario, la documentación de este sitio refleja Flutter 3.44.0. Página actualizada por última vez el 2026-05-05. Ver código fuente oreportar un problema.