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.
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.
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 menggunakanMediaQuery.displayFeatures
atauMediaQuery.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 yanghingeAngleEvents
dapat digunakan.
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.
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.