二、Flutter Tips - MediaQuery;

MediaQuery

  MediaQuery能夠創建媒體查詢解析給定的子樹。函數

  例如,要了解當前媒體的大小(例如,包含您的應用程序的窗口),您能夠從MediaQuery.ofMediaQuery.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的窗口小部件。ui

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,但刪除指定的填充。spa

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 })
複製代碼

  給定的上下文的最近實例的數據。 可使用此功能查詢屏幕方向的大小。當該信息發生變化時,小部件將被安排重建,使小部件保持最新狀態。code

MediaQueryData media = MediaQuery.of(context);
複製代碼

MediaQueryData

  關於一個媒體(例如,window)的信息。例如,MediaQueryData.size屬性包含當前窗口的寬度和高度。orm

  要獲取給定BuildContext的當前MediaQueryData,使用MediaQuery.of函數。例如,要獲取當前窗口的大小,請使用MediaQuery.of(context).size繼承

  MediaQueryData包含兩個EdgeInsets值:paddingviewInsets。這些值反映了設備的配置,並被許多頂級小部件使用,如SafeAreaCupertinoMaterial scaffold小部件。填充值定義可能不徹底可見的區域,例如iPhone X上的顯示「凹口」。viewInsets值定義根本不可見的區域,一般是由於它們被設備的鍵盤遮擋。

  viewInsetspadding值是獨立的,它們都是從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:平臺是否要求儘量禁用或減小動畫。
相關文章
相關標籤/搜索