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 dependenciespub.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 bereits MediaQuery.displayFeatures oder MediaQuery.hinge verwendet, um sich an faltbare oder Dual-Screen-Formfaktoren anzupassen, können Sie auch davon ausgehen, dass hingeAngleEvents 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.

Flutter dual_screen Beispiel, das auf dem Surface Duo-Emulator ausgeführt wird

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.

Flutter dual_screen Beispiel, das auf einem faltbaren Android Studio-Emulator ausgeführt wird