如何知道我的 Flutter Web 应用程序是在移动设备还是桌面设备上运行

Posted

技术标签:

【中文标题】如何知道我的 Flutter Web 应用程序是在移动设备还是桌面设备上运行【英文标题】:How to know if my flutter web app is running on mobile or desktop 【发布时间】:2021-01-26 20:08:00 【问题描述】:

我如何知道我的 Web Flutter 应用程序是在桌面还是移动设备上运行? 我不能使用 kIsWeb,因为它说如果应用程序是为网络构建的,而不是在网络上运行的。 谢谢。

【问题讨论】:

【参考方案1】:

为了检测 Flutter Web 是否在移动设备(仅限 iosandroid)上运行,您可以分两步进行检测:

使用kIsWeb 检测您是否在网络上 使用defaultTargetPlatform 获取默认平台(它将为您提供操作系统)*

这是我刚刚从 iOS 上的 Safari 调用 defaultTargetPlatform 进行的测试:

要使用defaultTargetPlatform,需要导入import 'package:flutter/foundation.dart';

例子:

import 'package:flutter/foundation.dart';
final isWebMobile = kIsWeb && (defaultTargetPlatform == TargetPlatform.iOS || defaultTargetPlatform == TargetPlatform.android)
defaultTargetPlatform 已经具备网络意识,并为您执行导航器恶作剧。你可以在这里看到实现:https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/foundation/_platform_web.dart

【讨论】:

【参考方案2】:

也许你可以根据屏幕大小做出决定。

var screenSize = MediaQuery.of(context).size;
final double width = screenSize.width;
final double height = screenSize.height - kToolbarHeight;

如果高度或宽度低于定义的值,您可以估计该应用是在移动设备上执行的。

【讨论】:

以上是关于如何知道我的 Flutter Web 应用程序是在移动设备还是桌面设备上运行的主要内容,如果未能解决你的问题,请参考以下文章

在本地管理 Flutter 应用和 Flutter Web 数据

如何从 IDE 在移动 chrome 上运行 Flutter Web

使用 Firebase 托管部署我的 Flutter Web 应用程序后出现错误

如何清除flutter web中的堆内存?

Flutter Web - 如何在桌面上的 Chrome 中测试 Flutter Web 应用程序打开?

如何在按下按钮时下载 Flutter Web 应用程序?