Baca dalam bahasa Inggris

Bagikan melalui


Sudut engsel pada Flutter

Engsel pada Surface Duo dan perangkat lain yang dapat dilipat berisi sensor yang memberi tahu kita sudut antara dua layar. Nilai sudut engsel berkisar antara 0 hingga 360:

  • 0 - Layar saling berhadapan, dan tidak terlihat. Perangkat ditutup.
  • 90 - Perangkat adalah bentuk "L" dengan layar di bagian dalam, kadang-kadang disebut sebagai laptop, tabletop, atau mode buku.
  • 180 - Perangkat datar. Layar menghadap ke arah yang sama.
  • 360 - Layar menghadap ke arah yang berlawanan dan hanya satu layar yang beroperasi.

Postur perangkat vs sudut engsel

Sudut engsel sudah digunakan untuk menghitung postur perangkat. Postur perangkat sudah terekspos melalui MediaQuery — tetapi ada situasi di mana sudut engsel itu sendiri penting untuk aplikasi Anda. Data mentah ini bukan bagian dari MediaQuery, karena ini akan terlalu sering memperbarui seluruh aplikasi Anda. Untuk mengakses data ini, Anda dapat menggunakan plugin dual_screen Flutter.

Mengukur sudut engsel

Tambahkan dual_screen ke bagian pub.dev dependencies Anda.

dependencies:
  dual_screen: ^1.0.2+2

Impor dan gunakan dalam file dart Anda.

import 'package:dual_screen/dual_screen_info.dart';

DualScreenInfo.hingeAngleEvents.listen((double hingeAngle) {
  print(hingeAngle);
});

DualScreenInfo.hasHingeAngleSensor.then((bool hasHingeSensor) {
  print(hasHingeSensor);
});

Anda sekarang memiliki akses ke dua properti statis baru:

  • hingeAngleEvents: Menyiarkan aliran peristiwa dari sensor sudut engsel perangkat. Jika perangkat tidak dilengkapi dengan sensor sudut engsel, aliran tidak menghasilkan peristiwa.
  • hasHingeAngleSensor: Masa depan mengembalikan true jika perangkat memiliki sensor sudut engsel. Atau, jika aplikasi Anda sudah menggunakan MediaQuery.displayFeatures atau MediaQuery.hinge untuk beradaptasi dengan faktor bentuk yang dapat dilipat atau layar ganda, Anda dapat dengan aman mengasumsikan sensor sudut engsel ada dan yang menghasilkan nilai yang hingeAngleEvents dapat digunakan.

Sampel

Ada sampel sumber terbuka yang tersedia di halaman GitHub ini. Anda dapat mengujinya menggunakan emulator reguler yang dapat dilipat yang tersedia di Android Studio atau menggunakan emulator Surface Duo.

Flutter dual_screen sampel yang berjalan di emulator Surface Duo

Perbedaan antara emulator Surface Duo dan perangkat atau emulator lainnya adalah mendukung sudut engsel dari 0 hingga 360 derajat dan juga memiliki dua layar terpisah.

Flutter dual_screen sampel yang berjalan di emulator yang dapat dilipat Android Studio