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

如何在Flutter中判断运行设备是平板还是Android TV

在Flutter中判断设备是平板还是Android TV

要实现设备类型判断,我们可以借助device_info_plus插件获取系统级设备信息,结合Android官方的设备定义完成逻辑。

步骤1:添加依赖

在pubspec.yaml中引入device_info_plus包:

dependencies:
  device_info_plus: ^9.1.0

步骤2:实现平板判断逻辑

平板的判断有两种可靠方式:利用插件提供的属性,或手动计算屏幕最短边的DP值(Android官方定义最短边≥600DP为平板)。

import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/material.dart';

Future<bool> isTablet(BuildContext context) async {
  final deviceInfo = DeviceInfoPlugin();
  final platform = Theme.of(context).platform;

  if (platform == TargetPlatform.android) {
    final androidInfo = await deviceInfo.androidInfo;
    // 方式1:直接使用插件封装的isTablet属性
    return androidInfo.isTablet;
    // 方式2:手动计算屏幕DP值(兼容旧版插件或自定义判断标准)
    // final mediaQuery = MediaQuery.of(context);
    // final shortestSideDp = mediaQuery.size.shortestSide / mediaQuery.devicePixelRatio;
    // return shortestSideDp >= 600;
  } else if (platform == TargetPlatform.iOS) {
    final iosInfo = await deviceInfo.iosInfo;
    return iosInfo.model.toLowerCase().contains('ipad');
  }
  return false;
}

步骤3:实现Android TV判断逻辑

Android TV的核心标识是支持leanback系统特性,通过检查该特性可精准识别:

Future<bool> isAndroidTV() async {
  final deviceInfo = DeviceInfoPlugin();
  final androidInfo = await deviceInfo.androidInfo;
  // 检查Android TV专属的leanback系统特性
  const leanbackFeature = 'android.software.leanback';
  return androidInfo.systemFeatures.contains(leanbackFeature);
}

注意事项

  • device_info_plus版本可根据项目Flutter版本调整,确保兼容性
  • Android TV判断优先使用系统特性检查,比设备型号匹配更可靠(部分TV设备型号可能不含"tv"标识)
  • 基于屏幕尺寸的平板判断需要在Widget树中调用,依赖MediaQuery的context

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:35:34