flutter Platform介绍

黄英韶
2023-12-01

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

属性类型本机打印结果描述
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运行时的版本。
 类似资料: