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测试

属性

类型

本机打印结果

描述

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运行时的版本。