Route popup in grado di riconoscimento della cerniera flutter
Quando l'applicazione è estesa in Surface Duo, le finestre di dialogo vengono visualizzate nella prima schermata, ovvero la schermata sinistra per le configurazioni da sinistra a destra. Il parametro anchorPoint
facoltativo nel showDialog
metodo consente di eseguire l'override di questo comportamento. I menu popup evitano la cerniera per impostazione predefinita. Se il codice include route modali personalizzate, è possibile eseguirne il wrapping con DisplayFeatureSubScreen per evitare la sovrapposizione della cerniera.
Per impostazione predefinita, questa finestra di dialogo viene visualizzata nella schermata sinistra per le configurazioni da sinistra a destra e la schermata destra per le configurazioni da destra a sinistra:
showDialog(
context: context,
builder: (_) => AlertDialog(
title: Text("Hinge Aware Dialog"),
content: Text("Going on the left screen"),
),
);
È possibile forzare il dialogo a passare alla schermata destra usando il anchorPoint
parametro . Queste funzioni come una destinazione che è possibile usare per selezionare la schermata desiderata:
showDialog(
context: context,
builder: (_) => AlertDialog(
title: Text("Hinge Aware Dialog"),
content: Text("Going on the right screen"),
),
anchorPoint: Offset(1000, 1000),
);
Route personalizzate
Nella tua app potrebbero essere presenti classi di route modali o popup personalizzate, che vuoi rendere compatibile con la cerniera. Usare il widget per eseguire il DisplayFeatureSubScreen
wrapping della route modale. Aggiungerlo nella parte superiore del layout della route per evitare la cerniera. Questo widget accetta anche un anchorPoint
parametro:
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,
);
}
}