如何在运行时检查平台

时间:2018-03-18 12:11:20

标签: operating-system dart device flutter platform

如何在运行时检查平台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}}

3 个答案:

答案 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的文档。