Angolo della cerniera su Flutter
La cerniera su Surface Duo e altri dispositivi piegabili contiene un sensore che indica l'angolo tra i due schermi. Il valore dell'angolo della cerniera è compreso tra 0 e 360:
- 0 - Gli schermi si trovano l'uno all'altro e non sono visibili. Il dispositivo è chiuso.
- 90 - Il dispositivo è una forma "L" con le schermate all'interno, talvolta denominata laptop, tavolo o modalità libro.
- 180 - Il dispositivo è flat. Le schermate si trovano di fronte alla stessa direzione.
- 360 - Le schermate si trovano di fronte a direzioni opposte e funziona solo uno schermo.
Posizione del dispositivo e angolo della cerniera
L'angolo della cerniera è già utilizzato per calcolare la postura del dispositivo. Il comportamento del dispositivo è già esposto tramite MediaQuery , ma in alcune situazioni l'angolo della cerniera è importante per l'app. Questi dati non elaborati non fanno parte di MediaQuery, perché l'intera app viene aggiornata troppo spesso. Per accedere a questi dati, è possibile usare il plug-in Dual_screen Flutter.
Misurare l'angolo della cerniera
Aggiungere dual_screen alla sezione pub.dev dependencies
.
dependencies:
dual_screen: ^1.0.2+2
Importare e usare nei file dart.
import 'package:dual_screen/dual_screen_info.dart';
DualScreenInfo.hingeAngleEvents.listen((double hingeAngle) {
print(hingeAngle);
});
DualScreenInfo.hasHingeAngleSensor.then((bool hasHingeSensor) {
print(hasHingeSensor);
});
È ora possibile accedere a due nuove proprietà statiche:
hingeAngleEvents
: trasmissione del flusso di eventi dal sensore dell'angolo della cerniera del dispositivo. Se il dispositivo non è dotato di un sensore dell'angolo della cerniera, il flusso non produce eventi.hasHingeAngleSensor
: restituisce true in futuro se il dispositivo ha un sensore dell'angolo della cerniera. In alternativa, se l'app usaMediaQuery.displayFeatures
già oMediaQuery.hinge
per adattarsi a fattori di forma piegabili o a doppio schermo, è possibile presupporre che il sensore dell'angolo della cerniera esista e chehingeAngleEvents
produci valori utilizzabili.
Esempio
In questa pagina GitHub è disponibile un esempio open source. È possibile testarlo usando gli emulatori piegabili normali disponibili in Android Studio o usando l'emulatore di Surface Duo.
La differenza tra l'emulatore di Surface Duo e altri dispositivi o emulatori è che supporta angoli della cerniera da 0 a 360 gradi e ha anche due schermi separati.