在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;
}
可以看到方法还是不少的 , 接下来我们主要介绍一下使用方法以及各个属性代表的含义.
import ‘dart:io’;
Platform.isAndroid
Platform.operatingSystem
其他属性使用方法同上.
void _btnPress() {
print(Platform.isAndroid); // true/false
}
如果你的手机是安卓的,会在控制台打印true,否则打印出false.
以下内容基于 Nexus5X API 28测试
属性 | 类型 | 本机打印结果 | 描述 |
---|---|---|---|
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运行时的版本。 |