Ângulo da dobradiça no Flutter

A dobradiça no Surface Duo e em 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.
  • 180 – O dispositivo é simples. 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 de 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.

Usar o ângulo da dobradiça

Adicione dual_screen à sua pub.dev de dados.

dependencies:
  dual_screen: ^1.0.0

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: transmitir fluxo de eventos do sensor de ângulo da dobradiça do dispositivo. Se o dispositivo não estiver equipado com um sensor de ângulo da dobradiça, o fluxo não produzirá nenhum evento.
  • hasHingeAngleSensor: retorno futuro verdadeiro se o dispositivo tiver um sensor de ângulo da dobradiça. Como alternativa, se seu aplicativo já usa ou para se adaptar a fatores forma de tela dupla ou dobrável, você pode presumir com segurança que o sensor de ângulo da dobradiça existe e que produz valores MediaQuery.displayFeaturesMediaQuery.hingehingeAngleEvents usáveis.

Amostra

Há um exemplo de código aberto disponível na página dual_screen GitHub . Você pode testá-lo usando os emuladores dobráveis regulares disponíveis no Android Studio ou usando o emuladordo Surface Duo.

Exemplo dual_screen Flutter 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.

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