MediaQuery
MediaQuery
可以建立媒體查詢解析給定的子樹。
例如,要了解當前媒體的大小(例如,包含您的應用程式的視窗),您可以從MediaQuery.of
:MediaQuery.of(context).size
返回的ediaQueryData
中讀取MediaQueryData.size
屬性。
使用MediaQuery.of
查詢當前媒體將導致您的視窗小部件在MediaQueryData
更改時自動重建(例如,如果使用者旋轉其裝置)。
如果MediaQuery
沒有在範圍內,則MediaQuery.of
方法將丟擲異常,除非將nullOk
引數設定為true
,在這種情況下它返回null
。
構造方法
const MediaQuery({Key key, @required MediaQueryData data, @required Widget child })
複製程式碼
常量建構函式:建立一個向其子Widget提供MediaQueryData
的視窗小部件。
factory MediaQuery.removePadding({Key key, @required BuildContext context, bool removeLeft: false, bool removeTop: false, bool removeRight: false, bool removeBottom: false, @required Widget child })
複製程式碼
工廠建構函式:建立一個新的MediaQuery
,它繼承自給定上下文的環境MediaQuery
,但刪除指定的填充。
factory MediaQuery.removeViewInsets({Key key, @required BuildContext context, bool removeLeft: false, bool removeTop: false, bool removeRight: false, bool removeBottom: false, @required Widget child })
複製程式碼
工廠建構函式:建立從給定上下文繼承環境MediaQuery
的新MediaQuery
,但刪除指定的檢視insets
。
靜態方法
static MediaQueryData of(BuildContext context, { bool nullOk = false })
複製程式碼
給定的上下文的最近例項的資料。 可以使用此功能查詢螢幕方向的大小。當該資訊發生變化時,小部件將被安排重建,使小部件保持最新狀態。
MediaQueryData media = MediaQuery.of(context);
複製程式碼
MediaQueryData
關於一個媒體(例如,window)的資訊。例如,MediaQueryData.size
屬性包含當前視窗的寬度和高度。
要獲取給定BuildContext
的當前MediaQueryData
,使用MediaQuery.of
函式。例如,要獲取當前視窗的大小,請使用MediaQuery.of(context).size
。
MediaQueryData
包含兩個EdgeInsets
值:padding
和viewInsets
。這些值反映了裝置的配置,並被許多頂級小部件使用,如SafeArea
和Cupertino
和Material scaffold
小部件。填充值定義可能不完全可見的區域,例如iPhone X上的顯示“凹口”。viewInsets
值定義根本不可見的區域,通常是因為它們被裝置的鍵盤遮擋。
viewInsets
和padding
值是獨立的,它們都是從MediaQuery
小部件的邊界測量的。 WidgetsApp
建立的頂級MediaQuery
的邊界與包含該應用程式的視窗相同。
構造方法
MediaQueryData.fromWindow(ui.Window window);
複製程式碼
基於給定視窗為媒體查詢建立資料
屬性
- Size size :邏輯畫素中的媒體大小(例如,螢幕的大小)。
- double devicePixelRatio :每個邏輯畫素的裝置畫素數。 這個數字可能不是兩個人的權力。 實際上,它甚至可能不是整數。 例如,Nexus 6的裝置畫素比為3.5。
- double textScaleFactor:每個邏輯畫素的字型畫素數。
- EdgeInsets viewInsets:應用程式可以呈現的顯示矩形每一側的物理畫素數,但作業系統可能會放置系統UI,例如鍵盤,完全遮蓋任何內容。
- EdgeInsets padding:應用程式可以呈現的顯示矩形每一側的物理畫素數,但可能被系統UI(例如系統通知區域)部分遮擋,或者顯示器中的物理入侵(例如電視上的過掃描區域) 螢幕或手機感測器外殼)。如果你使用了這個填充(例如,通過構建一個小部件來封裝或在其佈局中考慮這個填充,以便子節點不再暴露給這個填充),你應該通過插入為小部件樹中的後續後代刪除這個填充 使用
MediaQuery.removePadding
工廠的新MediaQuery
小部件。 - bool alwaysUse24HourFormat:格式化時間時是否使用24小時格式。 此標誌的行為在不同平臺上有所不同: 在Android上,此標誌直接從名為“使用24小時格式”的使用者設定報告。 它適用於應用程式使用的任何語言環境,無論是系統範圍的語言環境還是應用程式設定的自定義語言環境。 - 在iOS上,當設定了名為“24小時時間”的使用者設定或系統範圍的語言環境預設使用24小時時,此標誌設定為true格式。
- bool accessibleNavigation:使用者是否使用TalkBack或VoiceOver等輔助功能服務與應用程式進行互動。如果此設定為true,則應禁用超時等功能或增加最小持續時間。
- bool invertColors:裝置是否反轉平臺的顏色。此標誌目前僅在iOS裝置上更新。
- bool disableAnimations:平臺是否要求儘可能禁用或減少動畫。