Flutter心率监测插件heart_rate_flutter的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter心率监测插件heart_rate_flutter的使用

heart_rate_flutter 是一个用于在 Flutter 应用程序中访问心率数据的插件。它可以获取设备的心率信息,并将其实时展示在应用界面上。

开始使用

首先,你需要在 pubspec.yaml 文件中添加 heart_rate_flutter 依赖:

dependencies:
  flutter:
    sdk: flutter
  heart_rate_flutter: ^0.0.1 # 请确保使用最新版本

然后运行 flutter pub get 来安装该依赖。

完整示例

下面是一个完整的示例代码,展示了如何使用 heart_rate_flutter 插件来获取并显示心率数据。

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

import 'package:flutter/services.dart';
import 'package:heart_rate_flutter/heart_rate_flutter.dart'; // 导入心率插件

void main() {
  runApp(const MyApp());
}

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final HeartRateFlutter _heartRateFlutterPlugin = HeartRateFlutter(); // 初始化插件

  var heartBeatValue = 0; // 存储心率值

  [@override](/user/override)
  void initState() {
    _heartRateFlutterPlugin.init(); // 初始化插件
    _listener(); // 添加监听器
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center( // 居中显示文本
          child: Text("心率: $heartBeatValue"), // 显示当前心率
        ),
      ),
    );
  }

  void _listener() {
    _heartRateFlutterPlugin.heartBeatStream.listen((double event) { // 监听心率流
      if (mounted) { // 确保组件仍然挂载
        setState(() { // 更新UI
          heartBeatValue = event.toInt(); // 将浮点数转换为整数
        });
      }
    });
  }
}

更多关于Flutter心率监测插件heart_rate_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter心率监测插件heart_rate_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用heart_rate_flutter插件来监测心率的代码示例。这个插件允许你访问设备的心率传感器(如果设备支持的话)。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加heart_rate_flutter依赖:

dependencies:
  flutter:
    sdk: flutter
  heart_rate_flutter: ^x.y.z  # 请将 x.y.z 替换为最新版本号

然后运行flutter pub get来安装依赖。

2. 请求权限

在Android上,你需要请求心率传感器的权限。在你的AndroidManifest.xml文件中添加以下权限:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">

    <uses-permission android:name="android.permission.BODY_SENSORS"/>
    <!-- 其他配置 -->

</manifest>

3. 编写Flutter代码

以下是一个完整的示例,展示了如何使用heart_rate_flutter插件来获取心率数据:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Heart Rate Monitor',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HeartRateScreen(),
    );
  }
}

class HeartRateScreen extends StatefulWidget {
  @override
  _HeartRateScreenState createState() => _HeartRateScreenState();
}

class _HeartRateScreenState extends State<HeartRateScreen> {
  String _heartRate = 'N/A';
  bool _isAvailable = false;
  bool _isMonitoring = false;

  @override
  void initState() {
    super.initState();
    _checkHeartRateSensorAvailability();
  }

  Future<void> _checkHeartRateSensorAvailability() async {
    bool isAvailable = await HeartRateFlutter.sensorAvailable;
    setState(() {
      _isAvailable = isAvailable;
    });
  }

  Future<void> _startHeartRateMonitoring() async {
    if (!_isMonitoring) {
      setState(() {
        _isMonitoring = true;
      });

      HeartRateFlutter.heartRateStream.listen(
        (HeartRateValue heartRateValue) {
          setState(() {
            _heartRate = heartRateValue.bpm.toString();
          });
        },
        onError: (error) {
          print('Error: $error');
          setState(() {
            _heartRate = 'Error';
            _isMonitoring = false;
          });
        },
        onDone: () {
          setState(() {
            _isMonitoring = false;
          });
        },
        cancelOnError: true,
      );
    }
  }

  Future<void> _stopHeartRateMonitoring() async {
    if (_isMonitoring) {
      HeartRateFlutter.stopHeartRateStream();
      setState(() {
        _isMonitoring = false;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Heart Rate Monitor'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Heart Rate: $_heartRate',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 20),
            if (_isAvailable)
              ElevatedButton(
                child: _isMonitoring ? Text('Stop Monitoring') : Text('Start Monitoring'),
                onPressed: _isMonitoring ? _stopHeartRateMonitoring : _startHeartRateMonitoring,
              )
            else
              Text(
                'Heart rate sensor is not available on this device.',
                style: TextStyle(color: Colors.red),
              ),
          ],
        ),
      ),
    );
  }
}

代码解释

  1. 依赖添加:在pubspec.yaml中添加heart_rate_flutter依赖。
  2. 权限请求:在AndroidManifest.xml中添加BODY_SENSORS权限。
  3. 主应用:创建一个简单的Flutter应用,包含一个心率监测屏幕。
  4. 传感器可用性检查:在initState中调用HeartRateFlutter.sensorAvailable来检查心率传感器是否可用。
  5. 心率监测:使用HeartRateFlutter.heartRateStream来监听心率数据。当开始监测时,启动一个流监听器,当停止监测时,调用HeartRateFlutter.stopHeartRateStream()
  6. UI更新:根据心率传感器的状态和获取到的心率数据更新UI。

这个示例展示了如何使用heart_rate_flutter插件来实现基本的心率监测功能。你可以根据需要进一步扩展和定制。

回到顶部