Как определить платформу (операционную систему) на которой работает приложение, написанное на Dart'e

При разработке кроссплатформенных приложений периодически приходится учитывать особенности платформы, на которой приложение должно работать. В частности принципы построения пользовательского интерфейса на Android и iOS заметно отличаются и было бы желательно чтобы приложение предлагало тот же пользовательский опыт, что и нативные приложения, написанные под эту платформу с учетом тех принципов, которые декларируются разработчиками данной системы.

Отсюда вопрос:
Есть ли возможность узнать на какой платформе работает приложение и как это сделать?


Ответы (1 шт):

Автор решения: Михаил Ребров

Определение текущей платформы

Да, это возможно сделать с помощью класса Platform из пакета dart:io

import 'dart:io' show Platform;

if (Platform.isAndroid) {
  // код, предназначенный для Android
} else if (Platform.isIOS) {
  // код, предназначенный для iOS
}

Помимо Android, iOS данный пакет также может определить Linux, Windows, MacOS, Fuchsia

  • Platform.isAndroid
  • Platform.isFuchsia
  • Platform.isIOS
  • Platform.isLinux
  • Platform.isMacOS
  • Platform.isWindows

Определение того, работает ли приложение в веб-браузере

Также если Вы разрабатываете кроссплатформенное приложение на Flutter'е, которое может запускаться как на мобильных устройствах, десктопе, так и в браузере - вам нужен будет способ определить скомпилировано ли данное приложение под веб или нет.

Для этого есть константа kIsWeb в пакете package:flutter/foundation.dart

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

if (kIsWeb) {
  // запущено в вебе
} else {
  // это точно не веб. Тут нужно сделать еще пару проверок, описанных выше
}

Документация:

→ Ссылка