You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter Web应用中检测Apple设备User Agent以适配主题?

最优Apple设备UA检测方案(Flutter Web)

针对你的需求,最优的检测方式是全面匹配Apple全平台的UA特征关键词,而非仅搜索"Mac"——仅搜"Mac"会遗漏iPhone、iPad等移动Apple设备,同时能覆盖所有可能的伪装UA场景。

核心思路

Apple各系统的User Agent都会包含专属标识,我们只需要检查UA中是否存在以下任意一个关键词即可:

  • iPhone、iPad、iPod(对应iOS/iPadOS/iPod touch设备)
  • Macintosh、Mac OS X、MacIntel、MacPPC、Mac68K(对应macOS设备,含不同架构标识)
  • iOS、iPadOS(明确的系统版本标识)

Flutter Web实现代码

import 'dart:html' as html;
import 'package:universal_platform/universal_platform.dart';

// 检测Web端是否为Apple设备(含伪装UA)
bool isWebAppleDevice() {
  final userAgent = html.window.navigator.userAgent.toLowerCase();
  final appleUaKeywords = [
    'iphone',
    'ipad',
    'ipod',
    'macintosh',
    'mac os x',
    'macintel',
    'macppc',
    'mac68k',
    'ios',
    'ipados'
  ];
  return appleUaKeywords.any((keyword) => userAgent.contains(keyword));
}

// 统一判断是否使用Cupertino主题
bool shouldApplyCupertinoTheme() {
  // 移动端已通过Universal Platform处理
  if (UniversalPlatform.isIOS || UniversalPlatform.isMacOS) {
    return true;
  }
  // Web端走UA检测
  if (UniversalPlatform.isWeb) {
    return isWebAppleDevice();
  }
  // 其他平台默认用Material3
  return false;
}

方案优势

  1. 无遗漏覆盖:包含了Apple全平台的UA特征,不会漏掉iPhone、iPad等移动设备;
  2. 兼容伪装UA:只要UA中包含Apple相关标识,无论是否真实设备,都会判定为目标用户,完全符合你的需求;
  3. 低误判率:这些关键词均为Apple系统专属,非Apple设备的UA几乎不会包含(即使有个别例外,也契合你"包含伪装用户"的要求)。

内容的提问来源于stack exchange,提问作者Arthur Khazbulatov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:15:47