You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
HMG_Patient_App/lib/vital_signs/vital_sign.dart

70 lines
2.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:vital_sign_camera/vital_sign_camera.dart';
class VitalSigns extends StatefulWidget {
const VitalSigns({super.key});
@override
State<VitalSigns> createState() => _VitalSignState();
}
class _VitalSignState extends State<VitalSigns> {
late final VitalSignCameraController _vitalSignCameraController;
late Future<CameraDevice?> cameraDevice;
@override
void initState() {
super.initState();
cameraDevice = getFrontCamera();
}
double? _heartRate;
Future<CameraDevice?> getFrontCamera() async {
if (CameraPermissionStatus.authorized != await requestCameraPermission()) {
return null;
}
return queryCameraDevice(CameraPosition.front);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(children: [
VitalSignCamera(
onCreated: _onVitalSignCameraCreated,
isActive: true,
userInfo: UserInfo(
age: 30, gender: Gender.male, userId: '__YOUR_USER_ID__'),
config: VitalSignCameraConfig(apiKey: '__YOUR_API_KEY__'),
device: cameraDevice,
onVideoFrameProcessed: _onVideoFrameProcessed),
Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
setState(() {
_vitalSignCameraController.startScanning();
});
},
child: const Text('start')),
Text('Heart rate: $_heartRate'),
],
),
),
]),
);
}
void _onVideoFrameProcessed(VideoFrameProcessedEvent event) {
// setState(() {
// _heartRate = event.healthResult?.health?.vitalSigns.heartRate;
// });
}
void _onVitalSignCameraCreated(VitalSignCameraController controller) {
_vitalSignCameraController = controller;
}
}