Угол шарнира на Флуттер

Шарнир на поверхности Surface Duo и другие свертываемые устройства содержит датчик, указывающий угол между двумя экранами. Значение угла шарнира в диапазоне от 0 до 360:

  • 0 — экраны расположены друг за другом и не видны. Устройство закрыто
  • 90-устройство — это "L" фигура с экранами внутри.
  • 180-устройство является плоским. Экраны имеют одинаковое направление.
  • 360-экраны направлены на противоположные направления, и только один экран работает.

Угол по сравнению устройств и шарнир

Угол шарнира уже используется для вычисления уровня устройства. Уровень устройства уже доступен через медиакуери , но существуют ситуации, когда угол шарнира важен для вашего приложения. Эти необработанные данные не являются частью Медиакуери, так как это приведет к слишком частому обновлению всего приложения. Для доступа к этим данным можно использовать подключаемый модуль dual_screen флуттер.

Использовать угол шарнира

Добавьте dual_screen в раздел Pub.dev .

dependencies:
  dual_screen: ^1.0.0

Импорт и использование в файлах DART.

import 'package:dual_screen/dual_screen_info.dart';

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

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

Теперь у вас есть доступ к двум новым статическим свойствам:

  • hingeAngleEvents: Широковещательный поток событий от датчика угла петель устройства. Если устройство не оснащено датчиком угла шарнира, поток не создает никаких событий.
  • hasHingeAngleSensor: Будущее возвращает значение true, если устройство имеет датчик угла шарнира. Кроме того, если приложение уже использует MediaQuery.displayFeaturesMediaQuery.hinge среду или для адаптации к свертываемые или двум экранным факторам, можно безопасно предположить, что датчик угла шарнира существует и что hingeAngleEvents создает пригодные для использования значения.

Пример

на странице dual_screen GitHubдоступен пример с открытым кодом. Его можно протестировать с помощью регулярных эмуляторов свертываемые, доступных в Android Studio или с помощью эмулятора Surface Duo.

Пример dual_screen флуттер, выполняемый на эмуляторе Surface Duo

Различие между эмулятором Surface Duo и другими устройствами или эмуляторами заключается в том, что он поддерживает углы на шарнирах от 0 до 360 градусов, а также два отдельных экрана.

Пример dual_screen флуттер, выполняющийся в эмуляторе Android Studio свертываемые