Rute popup yang sadar engsel berkibar

Saat aplikasi Anda terbenam di Surface Duo, dialog akan masuk ke layar pertama, yang merupakan layar kiri untuk konfigurasi kiri-ke-kanan. Parameter anchorPoint opsional pada showDialog metode memungkinkan Anda untuk mengambil alih perilaku ini. Menu popup menghindari engsel secara default. Jika kode Anda memiliki rute modal kustom, Anda dapat membungkusnya dengan DisplayFeatureSubScreen untuk menghindari tumpang tindih engsel.

Secara default, dialog ini muncul di layar kiri untuk konfigurasi kiri-ke-kanan dan layar kanan untuk konfigurasi kanan-ke-kiri:

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

Surface Duo Flutter Dialog di layar kiri

Kita dapat memaksa dialog untuk masuk ke layar kanan dengan menggunakan anchorPoint parameter . Ini berfungsi seperti target yang dapat kita gunakan untuk memilih layar yang diinginkan:

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

Surface Duo Flutter Dialog di layar kanan

Rute kustom

Anda mungkin memiliki kelas rute modal atau popup Anda sendiri di aplikasi Anda, yang ingin Anda buat sadar engsel. DisplayFeatureSubScreen Gunakan widget untuk membungkus rute modal Anda. Tambahkan di bagian atas tata letak rute Anda untuk membuatnya menghindari engsel. Widget ini juga mengambil anchorPoint parameter:

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,
        );
    }
}