webentwicklung-frage-antwort-db.com.de

Wie erkennen Sie die Host-Plattform anhand des Dart-Codes?

Für die Benutzeroberfläche, die sich geringfügig von iOS und Android unterscheiden sollte, muss es eine Möglichkeit geben, herauszufinden, auf welcher Sie ausgeführt werden, aber ich konnte sie in den Dokumenten nicht finden. Was ist es?

28
Gavin
import 'Dart:io' show Platform;

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

Andere Optionen umfassen:

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

Dokumente: https://docs.flutter.io/flutter/Dart-io/Platform-class.html

33
Westy92

Dank Collin lautet die endgültige Antwort:

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

Obwohl defaultTargetPlatform funktioniert, würde ich vorschlagen, Theme.of(context).targetPlatform zu verwenden. Dies ermöglicht das Testen des iOS-Verhaltens (da defaultTargetPlatform in Tests immer TargetPlatform.Android ist). Außerdem können Vorfahren Ihres Widgets die Zielplattform überschreiben, indem Sie sie in ein Theme-Widget einbetten.

12
Collin Jackson

Du kannst tun

defaultTargetPlatform == TargetPlatform.iOS
          ? kIOSTheme
          : kDefaultTheme,

von 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

Die meisten "Flatter" -Antworten lauten wie folgt:

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