对于iOS
和Android
应略有不同的用户界面,必须有一种方法可以检测您正在运行哪个,但我无法在文档中找到它。它是什么?
答案 0 :(得分:68)
import 'dart:io' show Platform;
if (Platform.isAndroid) {
// Android-specific code
} else if (Platform.isIOS) {
// iOS-specific code
}
其他选择包括:
Platform.isFuchsia
Platform.isLinux
Platform.isMacOS
Platform.isWindows
文档:https://docs.flutter.io/flutter/dart-io/Platform-class.html
答案 1 :(得分:35)
感谢Collin,最后的答案是:
bool isIOS = Theme.of(context).platform == TargetPlatform.iOS;
答案 2 :(得分:16)
if (Platform.isAndroid) {
// Android-specific code/UI Component
} else if (Platform.isIOS) {
// iOS-specific code/UI Component
}
不要忘记导入 IO 库。
import 'dart:io';
如果您在同一个文件中也使用 import 'dart:html';
,那么您必须指定平台定义,因为两个库都有“平台”的定义
在这种情况下,请使用如下所示的平台特定代码:
import 'dart:io' as IO;
import 'dart:html';
if (IO.Platform.isAndroid) {
// Android-specific code/UI Component
} else if (IO.Platform.isIOS) {
// iOS-specific code/UI Component
}
如果您正在正确研究平台集成,我建议在 Flutter 站点上使用完整示例: https://flutter.dev/docs/development/platform-integration/platform-channels
答案 3 :(得分:15)
很简单,只需导入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(),
答案 4 :(得分:13)
虽然defaultTargetPlatform
可行,但我建议使用Theme.of(context).targetPlatform
。这样可以测试iOS行为(因为defaultTargetPlatform
在测试中总是TargetPlatform.android
。它还允许窗口小部件的祖先通过将其包装在Theme
窗口小部件中来覆盖其目标平台。
答案 5 :(得分:8)
你可以做到
defaultTargetPlatform == TargetPlatform.iOS
? kIOSTheme
: kDefaultTheme,
来自import 'package:flutter/foundation.dart';
答案 6 :(得分:5)
import 'dart:io' show Platform; //at the top
String os = Platform.operatingSystem; //in your code
print(os)
;
答案 7 :(得分:3)
import 'dart:io' as io;
if(io.Platform.isAndroid){
doSomething();
}else {
doSomethingElse();
}
答案 8 :(得分:2)
大多数“扑”的答案如下:
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
答案 9 :(得分:2)
您可以使用通用平台软件包:
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');
答案 10 :(得分:0)
为网络和应用提供更简单的方式。请尝试
import 'dart:io' show Platform;
import 'package:flutter/foundation.dart' show kIsWeb;
var platformName = '';
if (kIsWeb) {
platformName = "Web";
} else {
if (Platform.isAndroid) {
platformName = "Android";
} else if (Platform.isIOS) {
platformName = "IOS";
} else if (Platform.isFuchsia) {
platformName = "Fuchsia";
} else if (Platform.isLinux) {
platformName = "Linux";
} else if (Platform.isMacOS) {
platformName = "MacOS";
} else if (Platform.isWindows) {
platformName = "Windows";
}
}
print("platformName :- "+platformName.toString());
答案 11 :(得分:0)
所以这里有一个小工具,我用来检测平台和操作系统是否适当。
import'dart:io' show Platform;
import 'package:flutter/foundation.dart' show kIsWeb;
class Util {
os getPlatform() {
if (kIsWeb) {
return os.Web;
} else if (Platform.isIOS) {
return os.IOS;
} else if (Platform.isAndroid) {
return os.Android;
} else if (Platform.isFuchsia) {
return os.Fuchsia;
} else if (Platform.isLinux) {
return os.Linux;
} else if (Platform.isMacOS) {
return os.MacOS;
} else if (Platform.isWindows) {
return os.Windows;
}
return os.Unknown;
}
bool isWeb() {
return (getPlatform()==os.Web);
}
bool isMobile() {
os platform = getPlatform();
return (platform == os.Android || platform == os.IOS || platform== os.Fuchsia);
}
bool isComputer() {
os platform = getPlatform();
return (platform == os.Linux || platform == os.MacOS || platform== os.Windows);
}
}
enum os { Unknown, Web, Android, Fuchsia, IOS, Linux, MacOS, Windows }