Risposte:
import 'dart:io' show Platform;
if (Platform.isAndroid) {
// Android-specific code
} else if (Platform.isIOS) {
// iOS-specific code
}
Tutte le opzioni includono:
Platform.isAndroid
Platform.isFuchsia
Platform.isIOS
Platform.isLinux
Platform.isMacOS
Platform.isWindows
Puoi anche rilevare se stai eseguendo sul Web utilizzando kIsWeb, una costante globale che indica se l'applicazione è stata compilata per essere eseguita sul 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.
}
Platformdocumentazione: https://docs.flutter.io/flutter/dart-io/Platform-class.htmlkIsWebdocumentazione: https://api.flutter.dev/flutter/foundation/kIsWeb-constant.htmlGrazie a Collin, la risposta finale è:
bool isIOS = Theme.of(context).platform == TargetPlatform.iOS;
Sebbene defaultTargetPlatformfunzionerà, suggerirei di utilizzare Theme.of(context).targetPlatform. Ciò consente di testare il comportamento di iOS (perché defaultTargetPlatformè sempre TargetPlatform.androidnei test). Consente inoltre agli antenati del widget di sovrascrivere la sua piattaforma di destinazione avvolgendolo in un Themewidget.
if (Platform.isIOS) {//my iOS widgets}
Platform.isIOSha gli stessi problemi di defaultTargetPlatform. Non funziona nei test e non può essere sovrascritto dal Themewidget.
La maggior parte delle risposte "Flutter" è la seguente:
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
Tu puoi fare
defaultTargetPlatform == TargetPlatform.iOS
? kIOSTheme
: kDefaultTheme,
a partire dal import 'package:flutter/foundation.dart';
Puoi utilizzare il pacchetto 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');
È semplice importare la libreria 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();
}
o in modo molto semplice
Platform.isIOS ? someThing() : anOther(),
Undefined name 'Platform'.dart(undefined_identifier)Ci sono requisiti da utilizzarePlatform?