Compartilhar via


Ângulo da dobradiça no Flutter

A dobradiça do Surface Duo e de outros dispositivos dobráveis contém um sensor que nos informa o ângulo entre as duas telas. O valor do ângulo da dobradiça varia de 0 a 360:

  • 0 - As telas estão voltadas umas para as outras e não estão visíveis. O dispositivo está fechado.
  • 90 – O dispositivo é uma forma "L" com as telas no interior, às vezes chamadas de laptop, mesa ou modo de livro.
  • 180 – O dispositivo é plano. As telas estão voltadas para a mesma direção.
  • 360 - As telas estão voltadas para direções opostas e apenas uma tela está operando.

Postura do dispositivo versus ângulo da dobradiça

O ângulo da dobradiça já é usado para calcular a postura do dispositivo. A postura do dispositivo já está exposta por meio do MediaQuery , mas há situações em que o ângulo da dobradiça em si é importante para seu aplicativo. Esses dados brutos não fazem parte do MediaQuery, pois isso atualizaria todo o aplicativo com muita frequência. Para acessar esses dados, você pode usar o plug-in dual_screen Flutter.

Medir o ângulo da dobradiça

Adicione dual_screen à seção pub.dev dependencies .

dependencies:
  dual_screen: ^1.0.2+2

Importe e use em seus arquivos de dardos.

import 'package:dual_screen/dual_screen_info.dart';

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

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

Agora você tem acesso a duas novas propriedades estáticas:

  • hingeAngleEvents: transmissão de fluxo de eventos do sensor de ângulo da dobradiça do dispositivo. Se o dispositivo não estiver equipado com um sensor de ângulo de dobradiça, o fluxo não produzirá eventos.
  • hasHingeAngleSensor: futuro retornando true se o dispositivo tiver um sensor de ângulo de dobradiça. Como alternativa, se seu aplicativo já usa MediaQuery.displayFeatures ou MediaQuery.hinge para se adaptar a fatores forma dobráveis ou de tela dupla, você pode assumir com segurança que o sensor de ângulo da dobradiça existe e que hingeAngleEvents produz valores utilizáveis.

Amostra

Há um exemplo de software livre disponível nesta página do GitHub. Você pode testá-lo usando os emuladores dobráveis regulares disponíveis no Android Studio ou usando o emulador do Surface Duo.

Amostra do Flutter dual_screen em execução no emulador do Surface Duo

A diferença entre o emulador do Surface Duo e outros dispositivos ou emuladores é que ele dá suporte a ângulos de dobradiça de 0 a 360 graus e também tem duas telas separadas.

Amostra do Flutter dual_screen em execução em um emulador dobrável do Android Studio