Detecting the host platform in Flutter

Lazar Nikolov

The problem

Flutter is a cross-platform framework, which means it can run on multiple platforms. Most of the time we want our app to look consistent on all platforms, but there are use cases where wed like to run different code on different platforms, or render different widgets.

The solution

The mobile-only approach

The dart:io package exports a Platform class that we can use to check the platform our app is running on. Let’s import the Platform class:

import 'dart:io' show Platform;

The Platform class has boolean properties like isAndroid and isIOS that we can use to branch our platform-specific logic:

if (Platform.isAndroid) { // Run Android specific code } else if (Platform.isIOS) { // Run iOS specific code } else if (Platform.isMacOS) { // Run MacOS specific code } else if (Platform.isWindows) { // Run Windows specific code } else if (Platform.isLinux) { // Run Linux specific code } else if (Platform.isFuchsia) { // Run Fuschia specific code } else { // Unknown platform }

The Flutter web approach

As we know, Flutter also runs on the web, but the previous solution wont let us branch web-only logic in our app. Theres a different package that we can use to figure out if were running in web:

import 'package:flutter/foundation.dart' show kIsWeb;

The flutter/foundation.dart package exports a kIsWeb boolean, so we can use it similarly to the previous example:

if (kIsWeb) { // Run Web specific code } else { // Must be some of the other platforms }

Loved by over 4 million developers and more than 90,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.

Share on Twitter
Bookmark this page
Ask a questionJoin the discussion

Related Answers

A better experience for your users. An easier life for your developers.

    TwitterGitHubDribbbleLinkedinDiscord
© 2024 • Sentry is a registered Trademark
of Functional Software, Inc.