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

如何在Flutter中获取当前设备的温湿度数值

Flutter设备温湿度读数追踪实现方案及相关包

核心实现步骤

  1. 权限与设备特性配置

    • Android:在android/app/src/main/AndroidManifest.xml中添加传感器特性声明(无需强制要求,适配无传感器设备):
      <uses-feature android:name="android.hardware.sensor.temperature" android:required="false"/>
      <uses-feature android:name="android.hardware.sensor.humidity" android:required="false"/>
      
      访问本地传感器无需额外权限,若需后台持续监听,需补充配置后台权限。
    • iOS:常规场景无需额外权限,若需后台监听,需在Info.plist中添加对应后台模式权限。
  2. 传感器数据监听
    选择合适的传感器包,初始化监听回调,实时获取温湿度原始数据。

  3. 数据处理与展示
    可对原始数据做平滑处理(如滑动平均),消除波动,再在UI上实时展示,或存储到本地/云端。

  4. 异常处理
    针对设备无传感器、权限被拒、数据异常等情况,给出明确的用户提示,避免崩溃。

推荐相关包

1. sensors_plus

官方维护的传感器插件,支持温湿度在内的多种传感器,API简洁,兼容性强。

  • 安装:flutter pub add sensors_plus
  • 核心用法:通过temperatureEvents和humidityEvents流监听数据更新

2. flutter_sensors

功能全面的传感器库,提供传感器精度、采样率等详细信息,支持自定义监听参数。

3. environmental_sensors

专注于环境类传感器的包,针对温湿度、气压等环境数据做了优化,数据回调更精准。

示例代码(基于sensors_plus)

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

class TempHumidityTracker extends StatefulWidget {
  const TempHumidityTracker({super.key});

  @override
  State<TempHumidityTracker> createState() => _TempHumidityTrackerState();
}

class _TempHumidityTrackerState extends State<TempHumidityTracker> {
  double? _temperature;
  double? _humidity;

  @override
  void initState() {
    super.initState();
    // 监听温度数据
    temperatureEvents.listen((event) {
      setState(() => _temperature = event.temperature);
    });
    // 监听湿度数据
    humidityEvents.listen((event) {
      setState(() => _humidity = event.humidity);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('温湿度追踪')),
      body: Padding(
        padding: const EdgeInsets.all(20.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            Text(
              '当前温度: ${_temperature?.toStringAsFixed(1) ?? '未检测到传感器'} °C',
              style: const TextStyle(fontSize: 18),
            ),
            const SizedBox(height: 30),
            Text(
              '当前湿度: ${_humidity?.toStringAsFixed(1) ?? '未检测到传感器'} %',
              style: const TextStyle(fontSize: 18),
            ),
          ],
        ),
      ),
    );
  }
}

注意事项

  • 并非所有移动设备都内置温湿度传感器(多数手机无此硬件),测试时需使用支持的设备。
  • 传感器原始数据可能存在波动,可通过滑动平均等算法进行数据平滑。
  • 后台持续监听需额外配置系统权限,同时要考虑设备功耗问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:01:07