如何知道我的 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 是否在移动设备(仅限 ios 或 android)上运行,您可以分两步进行检测:
使用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 应用程序后出现错误