Flutter:我可以找出我在哪个平台上吗?
Flutter: can I find out what platform I am on?
我正在开发一个既可以作为应用程序又可以作为网页的项目。我正在使用 flutter_secure_storage 来存储应用程序的本地数据,但我需要一种不同的网络方法。
有没有什么方法可以在运行时找出我在哪个平台上,并相应地选择正确的读写函数?
对于网络,您使用:
if(kIsWeb) //returns a boolean if your app is running in a browser.
对于其他平台,您使用Platform
Platform.isAndroid
Platform.isIos
Platform.isLinux
在调用 Platform.is
之前,请务必先检查您是否在网络上 运行,因为它会抛出平台不适用于此环境的异常。
为了检测 Flutter 是否为 web 编译,您可以使用 package 中的 kIsWeb
import 'package:flutter/foundation.dart'
。对于 Android、IOS、Windows、Mac 等其他环境,您可以使用 Platform class like
Platform.IsWindows
如何检测 Flutter 应用在哪个平台上 运行:
Flutter 提供了两种不同的 API,使调用者能够更多地了解当前平台:作为基础库一部分的 kIsWeb 常量和作为平台库一部分的 Platform class。
Link 编码:
https://www.flutterclutter.dev/flutter/tutorials/how-to-detect-what-platform-a-flutter-app-is-running-on/2020/127/
import 'dart:io';
import 'package:flutter/foundation.dart' show kIsWeb;
class PlatformInfo {
bool isDesktopOS() {
return Platform.isMacOS || Platform.isLinux || Platform.isWindows;
}
bool isAppOS() {
return Platform.isMacOS || Platform.isAndroid;
}
bool isWeb() {
return kIsWeb;
}
PlatformType getCurrentPlatformType() {
if (kIsWeb) {
return PlatformType.Web;
}
if (Platform.isMacOS) {
return PlatformType.MacOS;
}
if (Platform.isFuchsia) {
return PlatformType.Fuchsia;
}
if (Platform.isLinux) {
return PlatformType.Linux;
}
if (Platform.isWindows) {
return PlatformType.Windows;
}
if (Platform.isIOS) {
return PlatformType.iOS;
}
if (Platform.isAndroid) {
return PlatformType.Android;
}
return PlatformType.Unknown;
}
}
enum PlatformType {
Web,
iOS,
Android,
MacOS,
Fuchsia,
Linux,
Windows,
Unknown
}
这样可以轻松地根据 OS 或底层平台组做出决策:
Text _getMicrophoneSection() {
if (PlatformInfo.isAppOS()) {
return Text('Please tap the microphone button and then permit the usage');
}
return Text('If you have a microphone available, please turn it on');
}
您可以将此扩展文件添加到项目中并在任何对象中调用
target.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;
}
// ···
}
并将其导入任何地方并像这样使用它
@override
Widget build(BuildContext context) {
return isAndroid()? Text("Android"):Text("Not Android");
}
我正在开发一个既可以作为应用程序又可以作为网页的项目。我正在使用 flutter_secure_storage 来存储应用程序的本地数据,但我需要一种不同的网络方法。 有没有什么方法可以在运行时找出我在哪个平台上,并相应地选择正确的读写函数?
对于网络,您使用:
if(kIsWeb) //returns a boolean if your app is running in a browser.
对于其他平台,您使用Platform
Platform.isAndroid
Platform.isIos
Platform.isLinux
在调用 Platform.is
之前,请务必先检查您是否在网络上 运行,因为它会抛出平台不适用于此环境的异常。
为了检测 Flutter 是否为 web 编译,您可以使用 package 中的 kIsWeb
import 'package:flutter/foundation.dart'
。对于 Android、IOS、Windows、Mac 等其他环境,您可以使用 Platform class like
Platform.IsWindows
如何检测 Flutter 应用在哪个平台上 运行: Flutter 提供了两种不同的 API,使调用者能够更多地了解当前平台:作为基础库一部分的 kIsWeb 常量和作为平台库一部分的 Platform class。 Link 编码: https://www.flutterclutter.dev/flutter/tutorials/how-to-detect-what-platform-a-flutter-app-is-running-on/2020/127/
import 'dart:io';
import 'package:flutter/foundation.dart' show kIsWeb;
class PlatformInfo {
bool isDesktopOS() {
return Platform.isMacOS || Platform.isLinux || Platform.isWindows;
}
bool isAppOS() {
return Platform.isMacOS || Platform.isAndroid;
}
bool isWeb() {
return kIsWeb;
}
PlatformType getCurrentPlatformType() {
if (kIsWeb) {
return PlatformType.Web;
}
if (Platform.isMacOS) {
return PlatformType.MacOS;
}
if (Platform.isFuchsia) {
return PlatformType.Fuchsia;
}
if (Platform.isLinux) {
return PlatformType.Linux;
}
if (Platform.isWindows) {
return PlatformType.Windows;
}
if (Platform.isIOS) {
return PlatformType.iOS;
}
if (Platform.isAndroid) {
return PlatformType.Android;
}
return PlatformType.Unknown;
}
}
enum PlatformType {
Web,
iOS,
Android,
MacOS,
Fuchsia,
Linux,
Windows,
Unknown
}
这样可以轻松地根据 OS 或底层平台组做出决策:
Text _getMicrophoneSection() {
if (PlatformInfo.isAppOS()) {
return Text('Please tap the microphone button and then permit the usage');
}
return Text('If you have a microphone available, please turn it on');
}
您可以将此扩展文件添加到项目中并在任何对象中调用
target.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;
}
// ···
}
并将其导入任何地方并像这样使用它
@override
Widget build(BuildContext context) {
return isAndroid()? Text("Android"):Text("Not Android");
}