flutter Platform介紹

__white發表於2021-08-08

這是我參與8月更文挑戰的第8天,活動詳情檢視:8月更文挑戰

#Platform 在dart:io中,提供與Platform類的API奇偶校驗,但使用例項屬性而不是靜態屬性。這種差異允許在測試中使用這些API,您可以在其中提供模擬實現。

看一下構造方法:

class Platform { 
  static int get numberOfProcessors => _numberOfProcessors;
  static String get pathSeparator => _pathSeparator;
  static String get localeName => _Platform.localeName();
  static String get operatingSystem => _operatingSystem;
  static String get operatingSystemVersion => _operatingSystemVersion;
  static String get localHostname => _localHostname;
  static final bool isLinux = (_operatingSystem == "linux");
  static final bool isMacOS = (_operatingSystem == "macos");
  static final bool isWindows = (_operatingSystem == "windows");
  static final bool isAndroid = (_operatingSystem == "android");
  static final bool isIOS = (_operatingSystem == "ios");
  static final bool isFuchsia = (_operatingSystem == "fuchsia");
  static Map<String, String> get environment => _Platform.environment;
  static String get executable => _Platform.executable;
  static String get resolvedExecutable => _Platform.resolvedExecutable;
  static Uri get script => _Platform.script;
  static List<String> get executableArguments => _Platform.executableArguments;
  static String get packageRoot => _Platform.packageRoot;
  static String get packageConfig => _Platform.packageConfig;
  static String get version => _version;
}
複製程式碼

可以看到方法還是不少的 , 接下來我們主要介紹一下使用方法以及各個屬性代表的含義.

##使用方法

###1.先引入包:

import 'dart:io';

2.使用:

Platform.isAndroid Platform.operatingSystem 其他屬性使用方法同上.

###3 例如:

  void _btnPress() {
    print(Platform.isAndroid);  // true/false
  }
複製程式碼

如果你的手機是安卓的,會在控制檯列印true,否則列印出false.

##API 以下內容基於 Nexus5X API 28測試

table th:second-of-type {width: 100px;}
屬性型別本機列印結果描述
numberOfProcessorsint4機器的各個執行單元的數量。
pathSeparatorString/作業系統用於分隔檔案路徑中的元件的路徑分隔符。
localeNameStringen_US獲取當前區域設定的名稱。
operatingSystemStringandroid表示作業系統或平臺的字串。
operatingSystemVersionStringLinux 4.4.124+ #1 SMP PREEMPT Mon Jun 18 17:10:07 UTC 2018表示作業系統或平臺版本的字串。
localHostnameStringlocalhost系統的本地主機名
isLinuxboolfalse作業系統是否為[Linux]的版本
isMacOSboolfalse作業系統是否為[macOS]的版本
isWindowsboolfalse作業系統是否為[Windows]的版本
isAndroidbooltrue作業系統是否為[Android]的版本
isIOSboolfalse作業系統是否為[IOS]的版本
isFuchsiaboolfalse作業系統是否為[Fuchsia]的版本
environmentMap< String, String >{PATH:/sbin:/system/sbin:/system/bin:/s } ..等一系列字串很長..此過程的環境為從字串鍵到字串值的對映。對映是不可修改的,其內容在首次使用時從作業系統中檢索。Windows上的環境變數不區分大小寫,因此在Windows上,對映不區分大小寫,並將所有鍵轉換為大寫。在其他平臺上,可以通過大小寫區分鍵。
executableString/system/bin/app_process32用於在此隔離中執行指令碼的可執行檔案的路徑。用於標識指令碼的文字路徑。此路徑可能是相對的,或者只是通過搜尋系統路徑從中找到可執行檔案的名稱。使用[resolvedExecutable]獲取可執行檔案的絕對路徑。
resolvedExecutableString/system/bin/app_process32作業系統解析後,用於在此隔離中執行指令碼的可執行檔案的路徑。這是解析所有符號連結的絕對路徑,用於執行指令碼的可執行檔案。
scriptUrifile:///main.dart在這個隔離區中執行指令碼的絕對URI。如果可執行環境不支援(指令碼),uri為空
executableArgumentsList< String >[]在這個隔離區中執行指令碼傳遞給可執行檔案的標誌。這些是在指令碼名稱前面的可執行檔案的命令列標誌。每次讀取值時都會提供一個新的列表。
packageRootStringnull--package-root標誌傳遞給可執行檔案,用於在該隔離區中執行指令碼。如果沒有--package-root標誌,則為null
packageConfigStringnull--package標誌傳遞給可執行檔案,用於在該隔離區中執行指令碼。如果沒有--package標誌,則為null
versionString2.0.0-dev.58.0.flutter-f981f09760 (Sat May 26 03:16:14 2018 +0000) on "android_ia32"當前DART執行時的版本。

相關文章