web-dev-qa-db-fra.com

Comment détectez-vous la plateforme hôte à partir du code Dart?

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

28
Gavin
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

33
Westy92

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

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

Bien que defaultTargetPlatform fonctionne, je suggère 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.

12
Collin Jackson

Tu peux faire

defaultTargetPlatform == TargetPlatform.iOS
          ? kIOSTheme
          : kDefaultTheme,

à partir de import 'package:flutter/foundation.Dart';

7
Rémi Rousselet
import 'Dart:io' show Platform;  //at the top

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

;

2
C-Spydo

La plupart des réponses "Flutter" sont les suivantes:

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
0
Ugurcan Yildirim