這是我參與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;}屬性 | 型別 | 本機列印結果 | 描述 |
---|---|---|---|
numberOfProcessors | int | 4 | 機器的各個執行單元的數量。 |
pathSeparator | String | / | 作業系統用於分隔檔案路徑中的元件的路徑分隔符。 |
localeName | String | en_US | 獲取當前區域設定的名稱。 |
operatingSystem | String | android | 表示作業系統或平臺的字串。 |
operatingSystemVersion | String | Linux 4.4.124+ #1 SMP PREEMPT Mon Jun 18 17:10:07 UTC 2018 | 表示作業系統或平臺版本的字串。 |
localHostname | String | localhost | 系統的本地主機名 |
isLinux | bool | false | 作業系統是否為[Linux]的版本 |
isMacOS | bool | false | 作業系統是否為[macOS]的版本 |
isWindows | bool | false | 作業系統是否為[Windows]的版本 |
isAndroid | bool | true | 作業系統是否為[Android]的版本 |
isIOS | bool | false | 作業系統是否為[IOS]的版本 |
isFuchsia | bool | false | 作業系統是否為[Fuchsia]的版本 |
environment | Map< String, String > | {PATH:/sbin:/system/sbin:/system/bin:/s } ..等一系列字串很長.. | 此過程的環境為從字串鍵到字串值的對映。對映是不可修改的,其內容在首次使用時從作業系統中檢索。Windows上的環境變數不區分大小寫,因此在Windows上,對映不區分大小寫,並將所有鍵轉換為大寫。在其他平臺上,可以通過大小寫區分鍵。 |
executable | String | /system/bin/app_process32 | 用於在此隔離中執行指令碼的可執行檔案的路徑。用於標識指令碼的文字路徑。此路徑可能是相對的,或者只是通過搜尋系統路徑從中找到可執行檔案的名稱。使用[resolvedExecutable]獲取可執行檔案的絕對路徑。 |
resolvedExecutable | String | /system/bin/app_process32 | 作業系統解析後,用於在此隔離中執行指令碼的可執行檔案的路徑。這是解析所有符號連結的絕對路徑,用於執行指令碼的可執行檔案。 |
script | Uri | file:///main.dart | 在這個隔離區中執行指令碼的絕對URI。如果可執行環境不支援(指令碼),uri為空 |
executableArguments | List< String > | [] | 在這個隔離區中執行指令碼傳遞給可執行檔案的標誌。這些是在指令碼名稱前面的可執行檔案的命令列標誌。每次讀取值時都會提供一個新的列表。 |
packageRoot | String | null | --package-root 標誌傳遞給可執行檔案,用於在該隔離區中執行指令碼。如果沒有--package-root 標誌,則為null |
packageConfig | String | null | --package 標誌傳遞給可執行檔案,用於在該隔離區中執行指令碼。如果沒有--package 標誌,則為null |
version | String | 2.0.0-dev.58.0.flutter-f981f09760 (Sat May 26 03:16:14 2018 +0000) on "android_ia32" | 當前DART執行時的版本。 |