Угол петли на флаттере
Петля на устройстве Surface Duo и других складных устройствах оснащена датчиком, который сообщает об угле между двумя экранами. Значение угла петли в диапазоне от 0 до 360:
- 0 — экраны обращены друг к другу и не видны. Устройство закрыто.
- 90 — устройство представляет собой форму "L" с внутренними экранами, иногда называемой режимом ноутбука, столешницы или книги.
- 180 — устройство является плоским. Экраны обращены в одном направлении.
- 360 — экраны находятся в противоположных направлениях, и работает только один экран.
Осанка устройства и угол шарнирования
Угол петли уже используется для вычисления положения устройства. Состояние устройства уже доступно через MediaQuery , но бывают ситуации, когда сам угол петли важен для вашего приложения. Эти необработанные данные не являются частью MediaQuery, так как они слишком часто обновляют все приложение. Для доступа к этим данным можно использовать подключаемый модуль Dual_screen Flutter.
Измерение угла петли
Добавьте dual_screen в раздел pub.dev dependencies
.
dependencies:
dual_screen: ^1.0.2+2
Импортируйте и используйте в файлах 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.displayFeatures
илиMediaQuery.hinge
для адаптации к складным или двухэкранным форм-факторам, можно с уверенностью предположить, что датчик угла шарнирования существует и создаетhingeAngleEvents
пригодные для использования значения.
Образец
На этой странице GitHub доступен пример с открытым кодом. Вы можете протестировать его с помощью обычных складных эмуляторов, доступных в Android Studio, или с помощью эмулятора Surface Duo.
Разница между эмулятором Surface Duo и другими устройствами и эмуляторами заключается в том, что он поддерживает угол наклона от 0 до 360 градусов, а также имеет два отдельных экрана.