Scharnierwinkel beim Flattern
Das Scharnier des Surface Duo und anderer faltbarer Geräte enthält einen Sensor, der uns den Winkel zwischen den beiden Bildschirmen angibt. Der Scharnierwinkelwert reicht von 0 bis 360:
- 0 – Bildschirme sind einander gegenüber und nicht sichtbar. Das Gerät ist geschlossen.
- 90 - Gerät ist eine "L"-Form mit den Bildschirmen im Inneren, manchmal auch als Laptop-, Tisch- oder Buchmodus bezeichnet.
- 180 – Das Gerät ist flach. Bildschirme sind in derselben Richtung ausgerichtet.
- 360 - Bildschirme sind entgegengesetzte Richtungen ausgerichtet, und nur ein Bildschirm ist in Betrieb.
Gerätestatus im Vergleich zum Scharnierwinkel
Der Scharnierwinkel wird bereits verwendet, um den Gerätestatus zu berechnen. Der Gerätestatus wird bereits über MediaQuery verfügbar gemacht. Es gibt jedoch Situationen, in denen der Scharnierwinkel selbst für Ihre App wichtig ist. Diese Rohdaten sind nicht Teil von MediaQuery, da dies Ihre gesamte App zu oft aktualisieren würde. Um auf diese Daten zuzugreifen, können Sie das dual_screen Flutter-Plug-In verwenden.
Messen des Scharnierwinkels
Fügen Sie Ihrem abschnitt dependencies
pub.dev dual_screen hinzu.
dependencies:
dual_screen: ^1.0.2+2
Importieren und verwenden Sie sie in Ihren Dart-Dateien.
import 'package:dual_screen/dual_screen_info.dart';
DualScreenInfo.hingeAngleEvents.listen((double hingeAngle) {
print(hingeAngle);
});
DualScreenInfo.hasHingeAngleSensor.then((bool hasHingeSensor) {
print(hasHingeSensor);
});
Sie haben jetzt Zugriff auf zwei neue statische Eigenschaften:
hingeAngleEvents
: Übertragungsdatenstrom von Ereignissen vom Scharnierwinkelsensor des Geräts. Wenn das Gerät nicht mit einem Scharnierwinkelsensor ausgestattet ist, erzeugt der Stream keine Ereignisse.hasHingeAngleSensor
: Gibt in Zukunft true zurück, wenn das Gerät über einen Scharnierwinkelsensor verfügt. Wenn Ihre App bereitsMediaQuery.displayFeatures
oderMediaQuery.hinge
verwendet, um sich an faltbare oder Dual-Screen-Formfaktoren anzupassen, können Sie auch davon ausgehen, dasshingeAngleEvents
der Scharnierwinkelsensor vorhanden ist und verwendbare Werte erzeugt.
Beispiel
Auf dieser GitHub-Seite ist ein Open-Source-Beispiel verfügbar. Sie können es mit den regulären faltbaren Emulatoren testen, die in Android Studio oder mit dem Surface Duo-Emulator verfügbar sind.
Der Unterschied zwischen dem Surface Duo-Emulator und anderen Geräten oder Emulatoren besteht darin, dass er Scharnierwinkel von 0 bis 360 Grad unterstützt und auch über zwei separate Bildschirme verfügt.