다음을 통해 공유


Flutter 힌지 인식 팝업 경로

응용 프로그램이 Surface Duo에 스팬되면 대화 상자가 왼쪽에서 오른쪽 구성의 왼쪽 화면인 첫 번째 화면으로 이동합니다. 메서드의 showDialog 선택적 매개 변수 anchorPoint 를 사용하면 이 동작을 재정의할 수 있습니다. 팝업 메뉴는 기본적으로 힌지(hinge)를 방지합니다. 코드에 사용자 지정 모달 경로가 있는 경우 힌지가 겹치지 않도록 DisplayFeatureSubScreen 으로 래핑할 수 있습니다.

기본적으로 이 대화 상자는 왼쪽에서 오른쪽 구성에 대한 왼쪽 화면과 오른쪽에서 왼쪽 구성에 대한 오른쪽 화면에 표시됩니다.

showDialog(
    context: context,
    builder: (_) => AlertDialog(
        title: Text("Hinge Aware Dialog"),
        content: Text("Going on the left screen"),
    ),
);

왼쪽 화면의 Surface Duo Flutter 대화 상자

매개 변수를 사용하여 anchorPoint 대화 상자가 오른쪽 화면으로 이동하도록 강제할 수 있습니다. 이 함수는 원하는 화면을 선택하는 데 사용할 수 있는 대상과 같습니다.

showDialog(
    context: context,
    builder: (_) => AlertDialog(
        title: Text("Hinge Aware Dialog"),
        content: Text("Going on the right screen"),
    ),
    anchorPoint: Offset(1000, 1000),
);

오른쪽 화면의 Surface Duo Flutter 대화 상자

사용자 지정 경로

앱에 힌지를 인식하려는 고유한 모달 또는 팝업 경로 클래스가 있을 수 있습니다. 위젯을 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,
        );
    }
}