如何在运行时检查平台

sha*_*eep 4 platform operating-system device dart flutter

如何在运行时检查平台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';
    }
  }
Run Code Online (Sandbox Code Playgroud)

Rém*_*let 12

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

Theme.of(context).platform
Run Code Online (Sandbox Code Playgroud)

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


sha*_*eep 7

我已经在SO上进行了一些搜索,也尝试使用Google进行搜索,但是这种情况的索引不够好,因此我认为我的问题和分析服务可能会有助于在Flutter上进行开发。

如果必须在运行时检查设备的操作系统或平台,则可以使用Platformdart.io

import 'dart:io'
Run Code Online (Sandbox Code Playgroud)

这样,您可以按照以下方式进行检查:

_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';
    }
  }
Run Code Online (Sandbox Code Playgroud)

相反,如果您还需要深入了解设备,可以使用dart device_info package

有一个很好的例子在这里

这样,您不仅可以检查正在运行的平台,还可以检查OS的特定版本(iOS 9, 10.3, 11.x, Lollipop, Jellybean等等)以及许多其他设备信息。

更新:

在Flutter Live 2018之后-> 观看此gr8 youtube 视频中的Platform Aware Widget,以及从同一代码库兼容Android和iOS UI的最佳方法。