Untuk UI yang seharusnya sedikit berbeda di iOS dan Android , yaitu pada platform yang berbeda , harus ada cara untuk mendeteksi aplikasi mana yang sedang berjalan, tetapi saya tidak dapat menemukannya di dokumen. Apa itu?
140
import 'dart:io' show Platform;
if (Platform.isAndroid) {
// Android-specific code
} else if (Platform.isIOS) {
// iOS-specific code
}
Semua opsi termasuk:
Platform.isAndroid
Platform.isFuchsia
Platform.isIOS
Platform.isLinux
Platform.isMacOS
Platform.isWindows
Anda juga dapat mendeteksi jika Anda menjalankan di web menggunakan kIsWeb
, konstanta global yang menunjukkan apakah aplikasi telah dikompilasi untuk dijalankan di web:
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
dokumentasi: https://docs.flutter.io/flutter/dart-io/Platform-class.htmlkIsWeb
dokumentasi: https://api.flutter.dev/flutter/foundation/kIsWeb-constant.html
Undefined name 'Platform'.dart(undefined_identifier)
Apakah ada persyaratan untuk digunakanPlatform
?Berkat Collin, jawaban akhirnya adalah:
sumber
Meskipun
defaultTargetPlatform
akan berhasil, saya sarankan menggunakanTheme.of(context).targetPlatform
. Ini memungkinkan pengujian perilaku iOS (karenadefaultTargetPlatform
selaluTargetPlatform.android
dalam pengujian). Ini juga memungkinkan leluhur widget Anda untuk mengganti platform targetnya dengan menggabungkannya dalam sebuahTheme
widget.sumber
if (Platform.isIOS) {//my iOS widgets}
Platform.isIOS
memiliki masalah yang sama sepertidefaultTargetPlatform
. Ini tidak berfungsi dalam pengujian dan tidak dapat ditimpa olehTheme
widget.sumber
Kebanyakan jawaban "Flutter" adalah sebagai berikut:
sumber
Anda dapat melakukan
dari
import 'package:flutter/foundation.dart';
sumber
Anda dapat menggunakan paket Platform Universal:
https://pub.dev/packages/universal_platform
sumber
Sederhana, cukup impor pustaka io
atau dengan cara yang sangat sederhana
sumber