微軟公布 Flutter 可折疊設(shè)備支持新進(jìn)展
微軟方面發(fā)布了關(guān)于支持用 Flutter 開(kāi)發(fā)可折疊設(shè)備的更新公告。此前,他們?cè)蛴脩粽故玖嗽?Flutter Framework 和 Engine 上打開(kāi)的 PR。目前Engine PR 已合并;最初的 Framework PR 則被拆分成更小的 PR,其中一些也已被合并。

圖:Flutter foldable PR progress
MediaQuery 現(xiàn)在具有 Display Features
Display Features 是可以被硬件功能阻礙的顯示部分。Surface Duo 上的鉸鏈就是這樣一個(gè) display feature。
MediaQuery PR 現(xiàn)已合并,這意味著如果你在本地 Flutter 設(shè)置中切換到 master channel,就可以訪問(wèn)一個(gè)名為displayFeatures的屬性。一些設(shè)備可以有多個(gè) display features,而不僅僅是一個(gè),因此這個(gè)新屬性是一個(gè)列表。這是列表中項(xiàng)目的結(jié)構(gòu):
class DisplayFeature {
final Rect bounds;
final DisplayFeatureType type;
final DisplayFeatureState state;
}
更多詳情可查看??官方文檔??。
如果你發(fā)現(xiàn)你的代碼總是在過(guò)濾 display features 列表以獲得鉸鏈,可以在你的代碼中使用此擴(kuò)展方法:
/// 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 也被合并
當(dāng)你只想在 Surface Duo 的一個(gè)屏幕上顯示內(nèi)容時(shí)(也就是顯示對(duì)話框時(shí)的情況),現(xiàn)在可以選擇使用DisplayFeatureSubScreen小部件。這個(gè)小部件主要用于 modal routes,并在“對(duì)話框和彈出窗口支持”P(pán)R 中大量使用。從這個(gè)意義上說(shuō),它是完整對(duì)話支持的墊腳石。如果你的應(yīng)用程序中有自定義的 modal routes,你可能需要考慮使用此小部件 wrapping 它們。
class _MyRoute<T> extends PopupRoute<T> {
@override
Widget buildPage() {
return DisplayFeatureSubScreen(
child: _myPageLayout(),
anchorPoint: Offset.infinite,
);
}
}
Surface Duo Experience 的高級(jí)軟件工程師 Andrei Diaconu 稱,現(xiàn)下尚有一些貢獻(xiàn)未合并,但情況已經(jīng)比最初提出這些更改時(shí)要簡(jiǎn)單得多?!澳菚r(shí)你必須配置一個(gè)自定義的 Flutter Engine,現(xiàn)在事情變得簡(jiǎn)單多了?!?/p>
此外,微軟還為可折疊 Flutter 添加了一些新示例,展示了可折疊設(shè)備的設(shè)計(jì)模式。


詳情可查看??官方博客??。
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:微軟公布 Flutter 可折疊設(shè)備支持新進(jìn)展
本文地址:https://www.oschina.net/news/184674/foldable-flutter-update
























