对于在iOS和Android上略有不同的UI,即在不同的平台上,必须有一种方法来检测应用程序在哪个平台上运行,但我在文档中找不到它。是什么?


当前回答

感谢科林,最终答案是:

bool isIOS = Theme.of(context).platform == TargetPlatform.iOS;

其他回答

你可以这样做

defaultTargetPlatform == TargetPlatform.iOS
          ? kIOSTheme
          : kDefaultTheme,

从导入'包:flutter/foundation.dart';

您可以将这个扩展文件(platform_ext.dart)添加到项目中并调用任何对象

import 'dart:io';
import 'package:flutter/foundation.dart' show kIsWeb;

extension Target on Object {
  bool isAndroid() {
    return Platform.isAndroid;
  } 
  bool isIOS() {
    return Platform.isIOS;
  } 
  bool isLinux() {
  return Platform.isLinux;
  } 
  bool isWindows() {
  return Platform.isWindows; 
  }
  bool isMacOS() {
  return Platform.isMacOS; 
  }
  bool isWeb() {
  return kIsWeb; 
  }
  // ···
}

只需导入文件并调用它

   import 'platform_ext.dart';
        ....
        @override
          Widget build(BuildContext context) {
            return isAndroid()? Text("Android"):Text("Not Android");
          }
import 'dart:io' show Platform;  //at the top

String os = Platform.operatingSystem; //in your code
print(os);

如果你同时导入"dart:io"和"dart:html",它不知道要导入哪个平台并给出错误。导入其中一个。

import 'dart:io';
Platform.isIOS ? CupertinoWidget() : MaterialWidget()
if (Platform.isAndroid) {
  // Android-specific code/UI Component
} else if (Platform.isIOS) {
  // iOS-specific code/UI Component
}

不要忘记导入IO库。

import 'dart:io';

如果你使用导入'dart:html';那么你必须指定平台定义,因为两个库都有“平台”的定义

在这种情况下,使用如下所示的平台特定代码:

import 'dart:io' as IO;
import 'dart:html';

if (IO.Platform.isAndroid) {
  // Android-specific code/UI Component
} else if (IO.Platform.isIOS) {
  // iOS-specific code/UI Component
}

如果你正在寻找合适的平台集成,我建议在Flutter网站上使用完整的示例: https://flutter.dev/docs/development/platform-integration/platform-channels