フラッター ヒンジ対応ポップアップ ルート
アプリケーションが Surface Duo にまたがると、最初の画面 (左から右への構成の左側の画面) にダイアログが表示されます。 メソッドのshowDialog
省略可能なパラメーターanchorPoint
を使用すると、この動作をオーバーライドできます。 ポップアップ メニューは、既定ではヒンジを回避します。 コードにカスタム モーダル ルートがある場合は、ヒンジが重ならないように DisplayFeatureSubScreen でラップできます。
既定では、このダイアログは左から右の構成の場合は左側の画面に表示され、右から左の構成の場合は右画面に表示されます。
showDialog(
context: context,
builder: (_) => AlertDialog(
title: Text("Hinge Aware Dialog"),
content: Text("Going on the left screen"),
),
);
パラメーターを使用して、ダイアログを強制的に右の画面に anchorPoint
移動させることができます。 この関数は、目的の画面を選択するために使用できるターゲットと同様に機能します。
showDialog(
context: context,
builder: (_) => AlertDialog(
title: Text("Hinge Aware Dialog"),
content: Text("Going on the right screen"),
),
anchorPoint: Offset(1000, 1000),
);
カスタム ルート
独自のモーダル またはポップアップ ルート クラスをアプリに含め、ヒンジ対応にしたい場合があります。 ウィジェットを DisplayFeatureSubScreen
使用してモーダル ルートをラップします。 ルート レイアウトの上部に追加して、ヒンジを回避します。 このウィジェットは、パラメーターも受け取ります anchorPoint
。
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,
);
}
}