微軟公布 Flutter 可折疊設備支持新進展
微軟方面發(fā)布了關于支持用 Flutter 開發(fā)可折疊設備的更新公告。此前,他們曾向用戶展示了在 Flutter Framework 和 Engine 上打開的 PR。目前Engine PR 已合并;最初的 Framework PR 則被拆分成更小的 PR,其中一些也已被合并。
圖:Flutter foldable PR progress
MediaQuery 現(xiàn)在具有 Display Features
Display Features 是可以被硬件功能阻礙的顯示部分。Surface Duo 上的鉸鏈就是這樣一個 display feature。
MediaQuery PR 現(xiàn)已合并,這意味著如果你在本地 Flutter 設置中切換到 master channel,就可以訪問一個名為displayFeatures的屬性。一些設備可以有多個 display features,而不僅僅是一個,因此這個新屬性是一個列表。這是列表中項目的結構:
class DisplayFeature {
final Rect bounds;
final DisplayFeatureType type;
final DisplayFeatureState state;
}
更多詳情可查看??官方文檔??。
如果你發(fā)現(xiàn)你的代碼總是在過濾 display features 列表以獲得鉸鏈,可以在你的代碼中使用此擴展方法:
/// Extension method that helps with working with the hinge specifically.
extension MediaQueryHinge on MediaQueryData {
DisplayFeature? get hinge {
for (final DisplayFeature e in displayFeatures) {
if (e.type == DisplayFeatureType.hinge)
return e;
}
return null;
}
}
DisplayFeatureSubScreen 也被合并
當你只想在 Surface Duo 的一個屏幕上顯示內(nèi)容時(也就是顯示對話框時的情況),現(xiàn)在可以選擇使用DisplayFeatureSubScreen小部件。這個小部件主要用于 modal routes,并在“對話框和彈出窗口支持”PR 中大量使用。從這個意義上說,它是完整對話支持的墊腳石。如果你的應用程序中有自定義的 modal routes,你可能需要考慮使用此小部件 wrapping 它們。
class _MyRoute<T> extends PopupRoute<T> {
@override
Widget buildPage( ) {
return DisplayFeatureSubScreen(
child: _myPageLayout(),
anchorPoint: Offset.infinite,
);
}
}
Surface Duo Experience 的高級軟件工程師 Andrei Diaconu 稱,現(xiàn)下尚有一些貢獻未合并,但情況已經(jīng)比最初提出這些更改時要簡單得多。“那時你必須配置一個自定義的 Flutter Engine,現(xiàn)在事情變得簡單多了?!?/p>
此外,微軟還為可折疊 Flutter 添加了一些新示例,展示了可折疊設備的設計模式。
詳情可查看??官方博客??。
本文轉自OSCHINA
本文標題:微軟公布 Flutter 可折疊設備支持新進展
本文地址:https://www.oschina.net/news/184674/foldable-flutter-update