如何在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
相关产品推荐
相关产品推荐

