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.
}
Platformtài liệu: https://docs.flutter.io/flutter/dart-io/Platform-class.htmlkIsWebtà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ù defaultTargetPlatformsẽ 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ì defaultTargetPlatformluôn TargetPlatform.androidtrong 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 Themewidget.
if (Platform.isIOS) {//my iOS widgets}
Platform.isIOScó 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 Themetiệ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ụngPlatformkhông?