【问题标题】:How to check platform at runtime如何在运行时检查平台
【发布时间】:2018-03-18 12:11:20
【问题描述】:

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

【问题讨论】:

    标签: operating-system dart device flutter platform


    【解决方案1】:

    我在 SO 上进行了一些搜索,也尝试在 Google 上搜索,但这种情况的索引不太好,所以我认为我的问题和分析器可以帮助开始在 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 youtubevideo 了解 Platform Aware Widget 以及从同一代码库兼容 Android 和 iOS UI 的最佳方式。

    【讨论】:

      【解决方案2】:

      获取当前平台的推荐方法是使用Theme

      Theme.of(context).platform
      

      这样,您可以在运行时使用自定义 Theme 覆盖该值,并立即查看所有更改。

      【讨论】:

      • 哦,很高兴知道!谢谢!它可以工作,我已经测试过了,并且为了进行简单的检查,它需要更多的编码,但是如果您需要运行时平台更改可能会很有用。这肯定会改善我的问题!谢谢+1!
      • 无论如何,请记住,在 Flutter 中,everything 是一个小部件,这不是玩笑。平台检查也应该使用小部件完成:p
      【解决方案3】:
      import 'dart:io'
      
      String os = Platform.operatingSystem;
      

      这是检查平台的简单方法,还可以提供有关正在使用的设备的许多其他有用信息。链接到有关 Platform class 的文档。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-17
        • 1970-01-01
        • 2010-10-03
        • 2022-11-03
        • 2014-03-22
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多