对于在iOS和Android上略有不同的UI,即在不同的平台上,必须有一种方法来检测应用程序在哪个平台上运行,但我在文档中找不到它。是什么?


当前回答

如果您只是需要一个字符串来记录日志,您可以使用Platform。operatingSystem,返回操作系统名称为小写字符串。

import 'dart:io';
import 'package:flutter/foundation.dart';

String _getPlatform() {
  if (kIsWeb) return 'web';
  return Platform.operatingSystem;
}

其他回答

import 'dart:io' as io;

if(io.Platform.isAndroid){
 doSomething();
}else {
 doSomethingElse();
}
import 'dart:io' show Platform;

if (Platform.isAndroid) {
  // Android-specific code
} else if (Platform.isIOS) {
  // iOS-specific code
}

所有选项包括:

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

你也可以使用kIsWeb来检测你是否在web上运行,kIsWeb是一个全局常量,指示应用程序是否被编译为在web上运行:

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

if (kIsWeb) {
  // running on the web!
} else {
  // NOT running on the web! You can check for additional platforms here.
}

平台文档:https://api.flutter.dev/flutter/dart-io/Platform-class.html kIsWeb文档:https://api.flutter.dev/flutter/foundation/kIsWeb-constant.html

感谢科林,最终答案是:

bool isIOS = Theme.of(context).platform == TargetPlatform.iOS;
**multiple platform you check and run your code according specific platform **

bool isIOS = Theme.of(context).platform == TargetPlatform.iOS;
bool isAndroid = Theme.of(context).platform == TargetPlatform.android;
bool islinux = Theme.of(context).platform == TargetPlatform.linux;
bool isfuchsia = Theme.of(context).platform == TargetPlatform.fuchsia;
bool isMacOS = Theme.of(context).platform == TargetPlatform.macOS;
bool iswindows = Theme.of(context).platform == TargetPlatform.windows;

您可以使用通用平台包:

https://pub.dev/packages/universal_platform

import 'package:universal_platform/universal_platform.dart';

bool isIos = UniversalPlatform.isIOS;
bool isAndroid = UniversalPlatform.isAndroid;
bool isWeb = UniversalPlatform.isWeb;
print('iOS: $isIos');
print('Android: $isAndroid');
print('Web: $isWeb');