Respuestas:
import 'dart:io' show Platform;
if (Platform.isAndroid) {
// Android-specific code
} else if (Platform.isIOS) {
// iOS-specific code
}
Todas las opciones incluyen:
Platform.isAndroid
Platform.isFuchsia
Platform.isIOS
Platform.isLinux
Platform.isMacOS
Platform.isWindows
También puede detectar si está ejecutando en la web usando kIsWeb
una constante global que indica si la aplicación fue compilada para ejecutarse en la 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.
}
Platform
documentación: https://docs.flutter.io/flutter/dart-io/Platform-class.htmlkIsWeb
documentación: https://api.flutter.dev/flutter/foundation/kIsWeb-constant.htmlGracias a Collin, la respuesta final es:
bool isIOS = Theme.of(context).platform == TargetPlatform.iOS;
Aunque defaultTargetPlatform
funcionará, sugeriría usar Theme.of(context).targetPlatform
. Esto permite probar el comportamiento de iOS (porque defaultTargetPlatform
siempre está TargetPlatform.android
en pruebas). También permite a los antepasados de su widget anular su plataforma de destino envolviéndolo en un Theme
widget.
if (Platform.isIOS) {//my iOS widgets}
Platform.isIOS
tiene los mismos problemas que defaultTargetPlatform
. No funciona en las pruebas y el Theme
widget no puede sobrescribirlo .
La mayoría de las respuestas de "Flutter" son las siguientes:
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
Puede utilizar el paquete de plataforma universal:
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');
Es simple, solo importa la biblioteca 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 de forma muy sencilla
Platform.isIOS ? someThing() : anOther(),
Undefined name 'Platform'.dart(undefined_identifier)
¿Hay algún requisito previo para usarPlatform
?