336 votes

Comment détecter la plateforme hôte à partir du code Dart?

Pour une interface utilisateur qui devrait différer légèrement sur iOS et Android , il doit exister un moyen de détecter celle sur laquelle vous exécutez l'application, mais je ne l'ai pas trouvée dans la documentation. Qu'Est-ce que c'est?

665voto

Westy92 Points 842
 import 'dart:io' show Platform;

if (Platform.isAndroid) {
  // Android-specific code
} else if (Platform.isIOS) {
  // iOS-specific code
}
 

Les autres options incluent:

 Platform.isFuchsia
Platform.isLinux
Platform.isMacOS
Platform.isWindows
 

Docs: https://docs.flutter.io/flutter/dart-io/Platform-class.html

103voto

Gavin Points 114

Grâce à Collin, la réponse finale est:

 bool isIOS = Theme.of(context).platform == TargetPlatform.iOS;
 

36voto

Collin Jackson Points 29995

Bien que defaultTargetPlatform fonctionnera, je suggérerais d'utiliser Theme.of(context).targetPlatform . Cela permet de tester le comportement iOS (car defaultTargetPlatform est toujours TargetPlatform.android dans les tests). Il permet également aux ancêtres de votre widget de remplacer sa plate-forme cible en l'enveloppant dans un widget Theme .

36voto

C-Spydo Points 129
 import 'dart:io' show Platform;  //at the top

String os = Platform.operatingSystem; //in your code
print(os)
 

;

16voto

Rémi Rousselet Points 45139

Tu peux faire

 defaultTargetPlatform == TargetPlatform.iOS
          ? kIOSTheme
          : kDefaultTheme,
 

de import 'package:flutter/foundation.dart';

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X