如何在运行时检查平台(Android/iOS
)?
如果我Android
而不是iOS
上的_openMap() async {
// Android
var url = 'geo:52.32,4.917';
if (/* i'm on iOS */) {
url = 'http://maps.apple.com/?ll=52.32,4.917';
}
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
,我想改变我的扑动应用行为。
像这样:
{{1}}
答案 0 :(得分:5)
我在SO上搜索了一下,并尝试了谷歌它,但是这个场景的索引不是很好,所以我认为我的问题和anser可能有助于开始在Flutter上进行开发。
如果您必须在运行时检查设备的操作系统或平台,可以使用Platform
class of dart.io
library。
import 'dart:io'
这样你就可以检查一下这样的方式:
_openMap() async {
// Android
var url = 'geo:52.32,4.917';
if (Platform.isIOS) {
// iOS
url = 'http://maps.apple.com/?ll=52.32,4.917';
} else if (Platform.isWindows) {
// TODO - something to do?
}
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
相反,如果您还需要深入了解设备,可以使用dart device_info package
。
有一个很好的例子here。
通过这种方式,您不仅可以检查您正在运行的平台,还可以检查特定版本的操作系统(iOS 9, 10.3, 11.x, Lollipop, Jellybean
等)以及许多其他设备信息。
更新:
Flutter Live 2018之后 - >请查看这个gr8 youtube video获取Platform Aware Widget以及从同一代码库中与Android和iOS UI兼容的最佳方式。
答案 1 :(得分:2)
获取当前平台的推荐方法是使用Theme
。
Theme.of(context).platform
这样,您可以在运行时使用自定义Theme
覆盖该值,并立即查看所有更改。
答案 2 :(得分:2)
import 'dart:io'
String os = Platform.operatingSystem;
这是检查平台的简单方法,并且还允许有关正在使用的设备的许多其他有用信息。链接到有关Platform class的文档。