Câu trả lời:
import 'dart:io' show Platform;
if (Platform.isAndroid) {
// Android-specific code
} else if (Platform.isIOS) {
// iOS-specific code
}
Tất cả các tùy chọn bao gồm:
Platform.isAndroid
Platform.isFuchsia
Platform.isIOS
Platform.isLinux
Platform.isMacOS
Platform.isWindows
Bạn cũng có thể phát hiện nếu bạn đang chạy trên web bằng cách sử dụng kIsWeb
, một hằng số chung cho biết liệu ứng dụng có được biên dịch để chạy trên web hay không:
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
tài liệu: https://docs.flutter.io/flutter/dart-io/Platform-class.htmlkIsWeb
tài liệu: https://api.flutter.dev/flutter/foundation/kIsWeb-constant.htmlCảm ơn Collin, câu trả lời cuối cùng là:
bool isIOS = Theme.of(context).platform == TargetPlatform.iOS;
Mặc dù defaultTargetPlatform
sẽ hiệu quả, tôi khuyên bạn nên sử dụng Theme.of(context).targetPlatform
. Điều này cho phép kiểm tra hành vi của iOS (vì defaultTargetPlatform
luôn TargetPlatform.android
trong các thử nghiệm). Nó cũng cho phép tổ tiên của widget của bạn ghi đè nền tảng mục tiêu của nó bằng cách gói nó trong một Theme
widget.
if (Platform.isIOS) {//my iOS widgets}
Platform.isIOS
có các vấn đề tương tự như defaultTargetPlatform
. Nó không hoạt động trong các thử nghiệm và không thể bị ghi đè bởi Theme
tiện ích con.
Hầu hết câu trả lời của "Flutter" như sau:
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
Bạn có thể sử dụng gói Nền tảng chung:
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');
Thật đơn giản chỉ cần nhập thư viện 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();
}
hoặc theo cách rất đơn giản
Platform.isIOS ? someThing() : anOther(),
Undefined name 'Platform'.dart(undefined_identifier)
Có bất kỳ điều kiện cần thiết để sử dụngPlatform
không?