对于在iOS和Android上略有不同的UI,即在不同的平台上,必须有一种方法来检测应用程序在哪个平台上运行,但我在文档中找不到它。是什么?
当前回答
如果您只是需要一个字符串来记录日志,您可以使用Platform。operatingSystem,返回操作系统名称为小写字符串。
import 'dart:io';
import 'package:flutter/foundation.dart';
String _getPlatform() {
if (kIsWeb) return 'web';
return Platform.operatingSystem;
}
其他回答
您可以将这个扩展文件(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");
}
导入io库很简单
import'dart:io' show Platform;
void main(){
if(Platform.isIOS){
return someThing();
}else if(Platform.isAndroid){
return otherThing();
}else if(Platform.isMacOS){
return anotherThing();
}
或者用非常简单的方式
Platform.isIOS ? someThing() : anOther(),
import 'dart:io' show Platform; //at the top
String os = Platform.operatingSystem; //in your code
print(os);
import 'dart:io' show Platform;
if (Platform.isAndroid) {
// Android-specific code
} else if (Platform.isIOS) {
// iOS-specific code
}else if (Platform.isFuchsia) {
// Fuchsia-specific code
}else if (Platform.isLinux) {
// Linux-specific code
}else if (Platform.isMacOS) {
// MacOS-specific code
}else if (Platform.isWindows) {
// Windows-specific code
}else if (Platform.isWindows) {
// Windows-specific code
}
网络
import 'package:flutter/foundation.dart' show kIsWeb;
if (kIsWeb) {
// running on the web!
} else {
// NOT running on the web! You can check for additional platforms here.
}
虽然defaultTargetPlatform可以工作,但我建议使用Theme.of(context). targetplatform。这样可以测试iOS行为(因为defaultTargetPlatform总是TargetPlatform)。Android正在测试中)。它还允许小部件的祖先通过将其包装在Theme小部件中来覆盖其目标平台。
推荐文章
- 如何在颤振小部件中创建超链接?
- 错误地使用父数据小部件。扩展小部件必须放置在flex小部件中
- 颤振给容器圆形边界
- Flutter: RenderBox没有布局
- 颤振插件未安装错误;当运行'扑动医生'时
- 如何改变appBar返回按钮的颜色
- 如何在扑动中设置按钮的宽度和高度?
- 我如何“休眠”Dart程序
- 在Flutter app上检查是否有网络连接
- 如何禁用或覆盖Android的“返回”按钮,在扑动?
- 如何在扑动中垂直和水平居中文本?
- Flutter and google_sign_in plugin: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10:, null)
- 如何在扑动中格式化日期时间
- 在Flutter中Column的子元素之间的空间
- Visual Studio代码- URI的目标不存在" package:flutter/material.dart "