Answers:
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
全局常量检测是否在网络上运行,该常量指示应用程序是否已编译为可以在网络上运行:
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.
}
感谢Collin,最终的答案是:
bool isIOS = Theme.of(context).platform == TargetPlatform.iOS;
虽然defaultTargetPlatform
可以,但是我建议使用Theme.of(context).targetPlatform
。这可以测试iOS行为(因为defaultTargetPlatform
始终TargetPlatform.android
处于测试状态)。它还允许您的窗口小部件的祖先通过将其包装在Theme
窗口小部件中来覆盖其目标平台。
if (Platform.isIOS) {//my iOS widgets}
Platform.isIOS
有与相同的问题defaultTargetPlatform
。它在测试中不起作用,并且不能被Theme
小部件覆盖。
多数“ Flutter”答案如下:
import 'package:flutter/foundation.dart' show TargetPlatform;
//...
if(Theme.of(context).platform == TargetPlatform.android)
//do sth for Android
else if(Theme.of(context).platform == TargetPlatform.iOS)
//do sth else for iOS
else if(Theme.of(context).platform == TargetPlatform.fuchsia)
//even do sth else for Fuchsia OS
你可以做
defaultTargetPlatform == TargetPlatform.iOS
? kIOSTheme
: kDefaultTheme,
从 import 'package:flutter/foundation.dart';
您可以使用通用平台软件包:
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');
很简单,只需导入io库
import'dart:io' show Platform;
void main(){
if(Platform.isIOS){
return someThing();
}else if(Platform.isAndroid){
return otherThing();
}else if(Platform.isMacOS){
return anotherThing();
}
或以非常简单的方式
Platform.isIOS ? someThing() : anOther(),
Undefined name 'Platform'.dart(undefined_identifier)
是否有任何根据条件使用Platform
?