Для пользовательского интерфейса, который должен немного отличаться на iOS
и Android
, должен быть способ определить, на каком из них вы работаете, но я не смог найти его в документации. Что это?
Как вы обнаруживаете платформу хоста от кода Дарта?
Ответ 1
Благодаря Collin, окончательный ответ:
bool isIOS = Theme.of(context).platform == TargetPlatform.iOS;
Ответ 2
import 'dart:io' show Platform;
if (Platform.isAndroid) {
// Android-specific code
} else if (Platform.isIOS) {
// iOS-specific code
}
Другие варианты включают в себя:
Platform.isFuchsia
Platform.isLinux
Platform.isMacOS
Platform.isWindows
Документы: https://docs.flutter.io/flutter/dart-io/Platform-class.html.
Ответ 3
Хотя defaultTargetPlatform
будет работать, я бы предложил использовать Theme.of(context).targetPlatform
. Это позволяет тестировать поведение iOS (поскольку defaultTargetPlatform
всегда TargetPlatform.android
в тестах). Он также позволяет предкам вашего виджета переопределить свою целевую платформу, обернув его в виджет Theme
.
Ответ 4
Ты можешь сделать
defaultTargetPlatform == TargetPlatform.iOS
? kIOSTheme
: kDefaultTheme,
из import 'package:flutter/foundation.dart';