Rutas emergentes compatibles con bisagra flutter
Cuando la aplicación se distribuye en Surface Duo, los cuadros de diálogo van en la primera pantalla, que es la pantalla izquierda para las configuraciones de izquierda a derecha. El parámetro anchorPoint
opcional del showDialog
método permite invalidar este comportamiento. Los menús emergentes evitan la bisagra de forma predeterminada. Si el código tiene rutas modales personalizadas, puede encapsularlas con DisplayFeatureSubScreen para evitar superponer la bisagra.
De forma predeterminada, este cuadro de diálogo se muestra en la pantalla izquierda para las configuraciones de izquierda a derecha y la pantalla derecha para las configuraciones de derecha a izquierda:
showDialog(
context: context,
builder: (_) => AlertDialog(
title: Text("Hinge Aware Dialog"),
content: Text("Going on the left screen"),
),
);
Podemos forzar que el cuadro de diálogo vaya a la pantalla derecha mediante el anchorPoint
parámetro . Esto funciona como un destino que se puede usar para seleccionar la pantalla deseada:
showDialog(
context: context,
builder: (_) => AlertDialog(
title: Text("Hinge Aware Dialog"),
content: Text("Going on the right screen"),
),
anchorPoint: Offset(1000, 1000),
);
Rutas personalizadas
Es posible que tengas tus propias clases de ruta modal o emergente en tu aplicación, que quieres hacer que sea compatible con la bisagra. Use el widget para ajustar la DisplayFeatureSubScreen
ruta modal. Agréguelo en la parte superior del diseño de ruta para evitar la bisagra. Este widget también toma un anchorPoint
parámetro:
class _MyRoute<T> extends PopupRoute<T> {
@override
Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
return DisplayFeatureSubScreen(
child: _myPageLayout(), // the previous content of buildPage
anchorPoint: Offset.infinite,
);
}
}