답변:
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
Universal Platform 패키지를 사용할 수 있습니다.
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
있습니까?