如何在运行时检查平台

7

我该如何在运行时检查平台(Android/iOS)?

如果我在Android上,我想要改变我的Flutter应用程序的行为,而不是在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';
    }
  }
3个回答

15

我在SO上搜索了一下,也尝试过谷歌搜索,但这种情况并没有很好地索引,所以我认为我的问题和答案可以帮助开始开发Flutter。

如果您需要在运行时检查设备的操作系统或平台,则可以使用dart.io库的Platform

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之后-->观看这个优秀的Youtube video,了解平台感知小部件以及从相同的代码库合规地处理Android和iOS UI的最佳方法。


12

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

Theme.of(context).platform

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


哦,好的,知道了!谢谢!它有效,我已经测试过了,对于一个简单的检查需要更多的编码,但如果你需要运行时平台的更改可能会有用。这肯定会改善我的问题!谢谢+1! - shadowsheep
无论如何,记住在Flutter中“一切”都是小部件,这不是一个玩笑。平台检查也应该使用小部件:p - Rémi Rousselet

3
import 'dart:io'

String os = Platform.operatingSystem;

这是检查平台的简单方法,还可以获取有关设备的许多其他有用信息。有关平台类的文档链接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接