platform_info
About
Cross-platform io/html package.
Works on the web, mobile phones, desktops and console.
Fully caches itself on first initialization.
Easy to use, just add to pubspec.yaml
as dependency and then import:
import 'package:platform_info/platform_info.dart';
Platform is a singleton, and the default way to access an instance of Platform is to call static getters:
Platform.instance
or Platform.I
or platform
Platform Information
Provides platform information such as:
-
Build mode
- release
- profile
- debug
-
Host platform type
- io (vm, desktops, mobile, console)
- web (html, js, browser)
-
Operating system
- Fuchsia
- Linux
- MacOS
- Windows
- iOS
- Android
- Unknown
-
Version (
<unknown>
if not available) -
Locale string (
en
if not available) -
The number of individual execution units of the machine (
0
if not available) -
Operating system is a known type
-
Is a Web-based applications
-
Is a I/O supporting for non-web applications
-
Is a mobile device (Android, iOS)
-
Is a desktop device (Windows, macOS, Fuchsia)
-
Is Material design device (Android, Fuchsia)
-
Is Cupertino design device (macOS, iOS)
-
is Linux
-
is macOS
-
is Windows
-
is android
-
is iOS
-
is fuchsia
-
when
method allowing to compose a complex condition
platform.when
Run functions that satisfy the current state of the platform.
You can use nested methods to compose more complex queries.
Operating System
fuchsia
- whether the operating system is a version of Fuchsia
windows
- whether the operating system is a version of Windows
android
- whether the operating system is a version of Android
iOS
- whether the operating system is a version of iOS
macOS
- whether the operating system is a version of MacOS
linux
- whether the operating system is a version of Linux
unknown
- operating system unknown
Design
material
- is material (Android, Fuchsia)
cupertino
- is cupertino (macOS, iOS)
Mobile or desktop
mobile
- is mobile device (Android, iOS)
desktop
- is desktop device (Windows, MacOS, Fuchsia)
IO or Web
web
- is web-based applications
io
- is I/O supporting for non-web applications
Build mode
release
- release build mode
profile
- profile build mode
debug
- debug build mode
orElse
- any callback was not called
Sequence of checks
- Operating System
- Design
- Mobile/Desktop
- IO/Web
- Build mode
- Call
orElse
if any callback was not called
For example
import 'package:platform_info/platform_info.dart';
void main(List<String> args) {
// Use [Platform.instance] or [Platform.I] or [platform] getter
print(Platform.instance.version);
print(Platform.I.operatingSystem);
print(platform.numberOfProcessors.gcd(1));
final string = platform.when(
io: () => platform.when(
fuchsia: () => 'io fuchsia',
windows: () => 'io windows',
android: () => 'io android',
iOS: () => 'io iOS',
macOS: () => 'io macOS',
linux: () => 'io linux',
unknown: () => 'io unknown',
),
web: () => platform.when(
material: () => 'web Android or Fuchsia',
cupertino: () => 'web macOS or iOS',
orElse: () => 'web Windows or Linux or unknown',
),
);
print(string);
}
Coverage
Changelog
Refer to the Changelog to get all release notes.